2015-05-27 13 views
7

Cấu trúc gói dir là nàysetuptools python setup.py cài đặt không sao chép tất cả các module con

repodir/ 
-------- setup.py 
-------- MANIFEST.in 

-------- bin/ 
----------- awsm.sh 

-------- sound/ 
------------ init.py 

------------ echo/ 
----------------- init.py 
----------------- module1.py 
----------------- module2.py 

------------ effects/ 
------------------- init.py 
------------------- module3.py 
------------------- module4.py 

setup.py

from setuptools import setup 
setup(
     name = 'sound', 
     version = '0.1', 
     author = 'awesomeo', 
     author_email = '[email protected]', 
     description = 'awesomeo', 
     license = 'Proprietary', 
     packages = ['sound'], 
     scripts = ['bin/awsm.sh'], 
     install_requires = ['Django==1.8.2', 'billiard', 'kombu', 'celery', 'django-celery' ], 
     zip_safe = False, 
    ) 

Khi tôi làm - python setup.py cài đặt , chỉ âm thanh/init .py được sao chép vào thư mục /Library/Python/2.7/site-packages/sound/.

Phần còn lại của gói phụ, tiếng vọng và hiệu ứng không được sao chép. Setuptools tạo ra một sound.egg-info có chứa tập tin SOURCES.txt

SOURCES.txt

MANIFEST.in 
setup.py 
bin/awsm.sh 
sound/__init__.py 
sound.egg-info/PKG-INFO 
sound.egg-info/SOURCES.txt 
sound.egg-info/dependency_links.txt 
sound.egg-info/not-zip-safe 
sound.egg-info/requires.txt 
sound.egg-info/top_level.txt 

Hình như thiết lập không bao gồm các gói con trong file SOURCES.txt được sao chép trên cài đặt và đó là những gì đang tạo ra vấn đề.

Bất kỳ ý tưởng nào tại sao điều này có thể xảy ra?

Trả lời

3

Thêm sound.echosound.effects đến packages. distutils sẽ không thu thập đệ quy các gói phụ.

Theo fine documentation:

distutils sẽ không đệ quy quét cây nguồn bạn đang tìm kiếm bất kỳ thư mục với tập tin __init__.py

Lưu ý: Ngoài ra hãy chắc chắn để tạo __init__.py file đối với các gói của bạn (Trong câu hỏi của bạn, bạn đặt tên cho chúng là init.py).

+0

Đó làm việc cho tôi, cảm ơn! Không biết về không quét đệ quy trước đây. – Manas

+0

Bạn có thể "chấp nhận" câu trả lời nếu nó hữu ích .-) – knitti

9

Bạn đã sử dụng setuptools vì vậy bạn có thể nhập find_packages để có được tất cả các gói phụ:

from setuptools import setup, find_packages 
setup(
    ... 
    packages=find_packages(), 
    ... 
) 
Các vấn đề liên quan