我有一个python包,我可以单独使用就好了。但是当我用pip将它安装到site-packages时,我失去了导入子模块的能力。
我的包装如下:
mypackage
mypackage
__init__.py
mymodule.py
moduledir
__init__.py
mysubmodule.py
setup.py
如果我在pythonpath上有包,我可以使用它。但是当我使用pip将它安装到site-packages时,我无法导入子模块。
from mypackage import mymodule # works fine
from mypackage.moduledir import mysubmodule # ModuleNotFoundError: No module named when installed to site-packages, works fine when on pythonpath
这里发生了什么?如何更改它以便我可以导入子模块?
另外,我确定这在某个地方得到了解答,但我无法在Google或SO上找到它。我道歉,如果它是微不足道的,我只是在谷歌搜索错误的条款。
编辑:这是我的setup.py请求。
from setuptools import setup
setup(name='mypackage',
version='0.1',
description='mypackage',
url='https://gitlab.com/ericksonla/mypackage',
author='ericksonla',
author_email='ericksonla@ericksonla.com',
license='',
packages=['mypackage'],
install_requires=[],
zip_safe=False)
答案 0 :(得分:0)
我需要将子模块添加到setup.py中的包列表中:
# setup.py
from setuptools import setup
setup(name='mypackage',
version='0.1',
description='mypackage',
url='https://gitlab.com/ericksonla/mypackage',
author='ericksonla',
author_email='ericksonla@ericksonla.com',
license='',
packages=['mypackage, 'mypackage.moduledir'],
install_requires=[],
zip_safe=False)
我仍然不太确定为什么我需要导入一个级别,但不能再进一步。