2009-05-21 17 views
6

tôi đang làm việc trên một gói Python sử dụng namespace_packagesfind_packages() như vậy trong setup.py:Làm thế nào để setuptools quyết định các tập tin để giữ cho sdist/bdist?

from setuptools import setup, find_packages 
setup(name="package", 
    version="1.3.3.7", 
    package=find_packages(), 
    namespace_packages=['package'], ...) 

Nó không phải là trong kiểm soát nguồn vì nó là một bó của các thành phần thượng nguồn. Không có MANIFEST.

Khi tôi chạy python setup.py sdist Tôi nhận được tarball của hầu hết các tệp trong thư mục package/ nhưng mọi thư mục không chứa các tệp .py đều bị bỏ qua.

Quy tắc mặc định cho những gì setup.py bao gồm và loại trừ khỏi các bản phân phối được xây dựng? Tôi cố định vấn đề của tôi bằng cách thêm một MANIFEST.in với

recursive-include package * 

nhưng tôi muốn hiểu những gì setuptools và distutils đang làm theo mặc định.

Trả lời

4

Bạn cần thêm chỉ thị package_data. Ví dụ: nếu bạn muốn bao gồm các tệp có đuôi .txt hoặc .rst:

from setuptools import setup, find_packages 
setup(name="package", 
    version="1.3.3.7", 
    package=find_packages(), 
    include_package_data=True, 
    namespace_packages=['package'], 
    package_data = { 
     # If any package contains *.txt or *.rst files, include them: 
     '': ['*.txt', '*.rst']... 

) 
+1

Ok tôi đã làm những gì bạn buồn. Nhưng khi tôi cài đặt nó bằng '' pip install git + git: // repo'', nó không bao gồm các tập tin. Giả sử tu có ở mức độ rèm của bố cục thư mục không? – Pol