2016-04-19 13 views
2

私は自分のプロジェクトをsetup.pyでパッケージ化しようとしていましたが、うんざりしました。次のようにパッケージ化後にPythonサブモジュールが表示されない

マイファイル構造は次のとおりです。

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

私は、

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=[...], 
) 

を私のsetup.pyで次の構成を使用している私はのpythonでパッケージをビルドをsetup.py installをvirtualenvの中で、私が印刷したデバッグ行には、find_packagesがすべてのpacakgesに配置されていることが示されていました。私は私のパッケージをインポートすると

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

、私はmypackage.submodule1.classをインポートしようとしましたが、これは例外を見つけていないモジュールを投げました。 すべてのモジュールがvirtualenv site-packagesの出力eggにあり、ルートパッケージをインポートできることを確認しました。

次のようにDIR(mypackageと)の出力は次のとおりです。

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__'] 

私は何かが足りないのですか?私が参照したすべてのオープンソースプロジェクトは、このパターンに従います。 ありがとう

答えて

0

回避策が見つかりました。 setup.pyを実行するだけで、私のすべてのファイルがパッケージ化されずに見えるようになっているようです。

代わりに私は2段階で自分のローカルセットアップを実行して、私のpython環境にあるすべてのファイルを取得しました。

この最初のコマンドは、distフォルダ内のすべてのファイルを含むディストリビューションを作成します。

$ 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 

これは私のpythonパッケージのすべてのファイルを正しく見つけることができました。

関連する問題