2017-07-13 117 views
0

我有一个自定义项目包结构像:蟒蛇安装包的子模块

package-dir/ 
    mypackage/ 
     __init__.py 
     submodule1/ 
       __init__.py 
       testmodule.py 
     main.py 
    requirements.txt 
    setup.py 

使用cd package-dir其次$pip install -e .pip install .python-packaging只要我从package-dir

访问包建议例如:

$cd project-dir 
$pip install . 

此时此作品:

$python -c 'import mypackage; import submodule1' 

但这不起作用

$ cd some-other-dir 
$ python -c 'import mypackage; import submodule1' 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
ImportError: No module named submodule1 

如何安装所有的子模块?

另外,如果我检查package-dir/build/lib.linux-x86_64-2.7/mypackage目录,我只看到眼前的文件mypackage/*.py和NO mypackage/submodule1

setup.py样子:

from setuptools import setup 
from pip.req import parse_requirements 

reqs = parse_requirements('./requirements.txt', session=False) 
install_requires = [str(ir.req) for ir in reqs] 


def readme(): 
    with open('README.rst') as f: 
     return f.read() 

setup(name='mypackage', 
     version='1.6.1', 
     description='mypackage', 
     long_description=readme(), 
     classifiers=[ 

     ], 
     keywords='', 
     url='', 
     author='', 
     author_email='', 
     license='Proprietary', 
     packages=['mypackage'], 
     package_dir={'mypackage': 'mypackage'}, 
     install_requires=install_requires, 
     include_package_data=True, 
     zip_safe=False, 
     test_suite='nose.collector', 
     tests_require=['nose'], 
     entry_points={ 
      'console_scripts': ['mypackage=mypackage.run:run'], 
     } 
    ) 
+0

从mypackage import submodule1''中执行'python -c'是否可以在其他目录中工作? – kadnarim

+0

不仅在相同的'package-dir'中,在最后更新一些关于构建的更多信息,如果有帮助 – muon

+0

'setup.py'的内容是什么?具体来说,你有像'packages = setuptools.find_packages()'这样的行吗? –

回答

1

setup.py缺少关于你的包结构的信息。您可以通过添加一条线启用自动发现功能。

setup(
    # ... 
    packages=setuptools.find_packages(), 
)