无法在python包中导入子模块

问题描述 投票:0回答:1

我有一个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='[email protected]',
      license='',
      packages=['mypackage'],
      install_requires=[],
      zip_safe=False)
python python-packaging
1个回答
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='[email protected]',
      license='',
      packages=['mypackage, 'mypackage.moduledir'],
      install_requires=[],
      zip_safe=False)

我仍然不太确定为什么我需要导入一个级别,但不是更进一步。

© www.soinside.com 2019 - 2024. All rights reserved.