Python包中的相对导入似乎不起作用

用户名

我有一个结构如下的程序包:

mypackage/
  util/
    __init__.py
    a.py
  b.py
  __init__.py
  setup.py

__init__.py文件是空的。b.py其中导入util/a.py

from .util import a

软件包附带的测试运行良好。但是,当我安装该软件包并尝试通过在另一个项目中使用它时from mypackage import b,我得到:

File [...] , in <module>
    from mypackage import b
File "/usr/local/lib/python3.7/site-packages/mypackage-0.0.1-py3.7.egg/mypackage/b.py", line 1, in <module>
    from .util import a
ModuleNotFoundError: No module named 'mypackage.util'

编辑1

setup.py 看起来像这样:

from setuptools import setup

setup(name="mypackage",
      version="0.0.1",
      description="My package",
      packages=["mypackage"])
客人

您必须在调用中包含该子包,setup否则将不会安装该子包

setup(
    ...
    packages=[
        'mypackage',
        'mypackage.util',
    ]
)

您也可以使用以下setuptools.find_packages命令来自动执行此过程:

from setuptools import find_packages

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章