2016-04-19 16 views
2

Ich habe versucht, mein Projekt mit setup.py zu packen, aber ich lief in einen Haken.Python Submodule nicht sichtbar nach dem Verpacken

Meine Dateistruktur ist wie folgt:

root/ 
    mypackage/ 
    __init__.py 
    mysubmodule1/ 
     __init__.py 
    mysubmodule2/ 
     __init__.py 

ich die folgende Konfiguration in meinem setup.py verwenden,

from setuptools import setup, find_packages 
# To use a consistent encoding 
from os import path 
import glob 

here = path.abspath(path.dirname(__file__)) 

print(find_packages(exclude=['docs', 'tests*'])) 
setup(
    name='mypackage', 
    packages=find_packages(exclude=['contrib', 'docs', 'tests*']), 
    install_requires=[...], 
    scripts=[...], 
) 

ich das Paket mit Python bauen setup.py installieren In einem virtualenv, die Debug-Zeile, die ich gedruckt habe, zeigte, dass find_packages alle meine pacakges gefunden.

['mypackage', 'mypackage.submodule1', 'mypackage.submodule2'] 

Wenn ich mein Paket zu importieren, versuchte ich mypackage.submodule1.class, aber das warf ein Modul nicht Ausnahme gefunden zu importieren. Ich habe überprüft, dass alle meine Module im Ausgabe-Ei in den virtualenv Site-Paketen sind, und dass ich mein Root-Paket importieren kann.

Der Ausgang des dir (mypackage) ist wie folgt:

Python 2.7.6 (default, Jun 22 2015, 17:58:13) 
[GCC 4.8.2] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import mypackage 
>>> dir(mypackage) 
['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '__version__'] 

bin ich etwas fehlt? Alle Quellprojekte, auf die ich Bezug genommen habe, folgen diesem Muster. Dank

Antwort

0

Eine Arbeit gefunden. Es scheint, dass das Ausführen von setup.py nicht alle meine Dateien packt und sichtbar macht.

Also stattdessen habe ich meine lokalen Setup in 2 Stufen ausgeführt, um alle Dateien auf meiner Python-Umgebung zu erhalten.

Dieser erste Befehl erstellt eine Verteilung mit allen Dateien in einem Dist-Ordner.

$ python setup.py sdist 

$ tree dist 
dist 
├── TrainingDataAgent-0.0.1-py2.7.egg 
└── TrainingDataAgent-0.0.1.tar.gz 

$ pip install dist/TrainingDataAgent-0.0.1.tar.gz 

Dies ermöglichte es meinem aufrufenden Programm, alle Dateien meines Python-Pakets korrekt zu lokalisieren.

Verwandte Themen