Python - 安装 setup.py 时无法导入子包

Python - package can not import subpackages when installed with setup.py

我开发了一个 python 包,我想在另一个项目中使用它。 包结构如下例所示:

- foo
  - setup.py
  - README.md
  - foo
    - __init__.py
    - main.py
    - bar.py
    - sub_pkg1
       - __init__.py
       - example.py
    - sub_pkg2
       - __init__.py
       - example2.py

bar.py 文件包含 Bar-Class 依赖于 sub_pkg1sub_pkg2 中的文件,它们像

from sub_pkg1 import example.py

__init__.py 文件只导入其目录中的每个 python 文件。 例如 sub_pkg1__init__.py:

from example import ExampleClass

main.py 文件只是导入 Bar Class 并执行它的一些方法。

from bar import Bar
bar = Bar()
bar.foo()

setup.py文件如下所示:

from setuptools import setup, find_packages

setup(
    name='Bar',
    version='0.0.7',
    author='me',
    packages=find_packages()
)

当我直接从包中 运行 main.py 文件时,它就像一个魅力。 但是,当我使用以下命令使用 pip 在我的其他项目中安装它时: (我还不想将包发布到 PyPi,只想在我的其他项目中包含开发版本)

pip install -e /path/to/package

并尝试导入它 - 我收到错误:

ModuleNotFoundError: No module named 'example'

我需要以某种方式导出 sub_packages 吗?

我用Python3.6

而不是 from sub_pkg1 import example.py 使用 from sub_pkg1 import ExampleClass

与 sub_pkg1 和 sub_pkg2 中的 __init__.py 一样,您已经导入了 ExampleClass,现在您可以直接从 [=23 导入 ExampleClass =] 项目中的任何位置。

在此处阅读有关 __init__.py 和模块的更多信息:https://docs.python.org/3/tutorial/modules.html