命名空间包出现问题:ModuleNotFoundError

时间:2019-11-16 00:26:02

标签: python python-3.x

我正在使用python3.7并尝试使名称空间包正常工作,但是存在一些模块import问题。我不清楚如何解决此问题。我已按照此处给出的说明(第一种方法)进行操作:Packaging namespace packages

我的项目的组织方式如下:

scripts/
  python_pkgs/
       a/
          __init__.py     <-- Contents of this file are name='a'
          a.py
          b.py
       utils/
          __init__.py     <-- Contents of this file are name='utils'
          util.py
  setup.py

setup.py的内容是:

from setuptools import setup, find_namespace_packages

setup(
    packages=find_namespace_packages(include=['python_pkgs.*'])
)

现在a.py是可执行脚本。我在其中执行以下操作:

#/path/to/python3 -B

from b import foo
from python_pkgs.utils import util

第一次导入可以正常进行,因为b.py与a.py位于同一文件夹中。但是,尝试import util.py时出现错误:

        from pythong_pkgs.utils import util, misc
    ModuleNotFoundError: No module named 'pythong_pkgs'

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

如果应将pythong_pkgs打包,则此目录内应有__init__.py

第二件事是可执行脚本不应成为python软件包的一部分。它应该是单独的文件

#/path/to/python3 -B

from python_pkgs.a.b import foo
from python_pkgs.utils import util

#/path/to/python3 -B

from python_pkgs.a.a import main

if __name__ == "__main__":
    main()

您还可以调用python模块python -m python_pkgs.a.a