2015-05-27 11 views
7

Struktura pakietu dir jest tosetuptools python setup.py install nie kopiuje wszystkie moduły podrzędne

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, 
    ) 

Kiedy zrobić - python setup.py zainstalować , tylko dźwięk/init .py jest kopiowany do katalogu /Library/Python/2.7/site-packages/sound/.

Reszta podpakietów echo, surround i efekty nie są w ogóle kopiowane. Setuptools tworzy sound.egg-info, które zawierają SOURCES.txt złożyć

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 

Wygląda konfiguracji nie obejmuje podpakiety w pliku SOURCES.txt zostać skopiowane na zainstalować i to właśnie tworzy problem.

Każdy pomysł, dlaczego tak się stanie?

Odpowiedz

3

Dodaj sound.echo i sound.effects do packages. distutils nie rekursywnie zbierze podpakiety.

jak na fine documentation:

pakietu Distutils nie rekursywnie skanowanie drzewa źródłowego szuka dowolnego katalogu z plikiem __init__.py

Uwaga: Należy również pamiętać, aby utworzyć __init__.py pliki do opakowań (W swoim pytaniu nazwałeś je init.py).

+0

który pracował dla mnie, dzięki! Nie wiedziałem o wcześniejszym skanowaniu rekurencyjnym. – Manas

+0

Możesz "zaakceptować" odpowiedź, jeśli była pomocna .-) – knitti

9

Korzystasz już setuptools więc można importować find_packages aby wszystkie pakiety podrzędne:

from setuptools import setup, find_packages 
setup(
    ... 
    packages=find_packages(), 
    ... 
) 
Powiązane problemy