2009-05-21 7 views
6

Ich arbeite an einem Python-Paket, das namespace_packages und find_packages() wie so in setup.py verwendet:Wie entscheidet setuptools, welche Dateien für sdist/bdist zu behalten sind?

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

Es ist nicht die Kontrolle in Quelle, weil es ein Bündel von Upstream-Komponenten ist. Es gibt kein MANIFEST.

Als ich python setup.py sdist laufen bekomme ich einen Tarball des meisten der Dateien im Verzeichnis package/ aber alle Verzeichnisse, die .py Dateien nicht enthalten, werden weggelassen.

Was sind die Standardregeln für das, was setup.py enthält und von integrierten Distributionen ausschließt? Ich habe mein Problem behoben, indem ein MANIFEST.in mit

Zugabe
recursive-include package * 

aber ich möchte verstehen, was Setuptools und distutils standardmäßig tun.

Antwort

4

Sie müssen eine package_data-Direktive hinzufügen. Wenn Sie beispielsweise Dateien mit der Erweiterung .txt oder .rst einschließen möchten:

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, ich habe getan, was Sie traurig sind. Aber wenn ich es mit '' pip install git + git: // repo'' installiere, enthält es keine Dateien. Sollen wir annehmen, dass es sich um eine Vorhang-Ebene des Verzeichnis-Layouts handelt? – Pol