2015-05-27 6 views
7

Das Paket dir Struktur ist dieseSetuptools python setup.py install nicht alle untergeordneten Module Kopieren

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

Als ich tun - Python setup.py installieren , nur Sound/init .py wird in das Verzeichnis /Library/Python/2.7/site-packages/sound/ kopiert.

Die restlichen Unterpakete echo, surround und effects werden überhaupt nicht kopiert. Setuptools schafft eine sound.egg-info, die 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 

wie Setup sucht nicht die Subpackages in der SOURCES.txt Datei Include-Datei enthalten werden kopiert auf installieren und das ist, was das Problem verursacht.

Eine Idee, warum das passieren könnte?

Antwort

3

Fügen Sie sound.echo und sound.effects zu packages hinzu. distutils sammelt Unterpakete nicht rekursiv.

Gemäß der fine documentation:

Distutils nicht rekursiv Ihre Quellbaum scannen suchen ein beliebiges Verzeichnis mit einer __init__.py Datei

Hinweis: Auch sicher sein, __init__.py Dateien für Ihre Pakete erstellen (In Ihrer Frage haben Sie sie init.py genannt).

+0

die für mich gearbeitet, danke! Ich wusste vorher nichts von einem rekursiven Scan. – Manas

+0

Sie könnten die Antwort "akzeptieren", wenn es hilfreich war .-) – knitti

9

Sie sind bereits Setuptools verwenden, so können Sie find_packages importieren alle Sub-Pakete zu bekommen:

from setuptools import setup, find_packages 
setup(
    ... 
    packages=find_packages(), 
    ... 
) 
Verwandte Themen