使用包的 Python 项目中的 ModuleNotFoundError
ModuleNotFoundError in a Python project using packages
我有一个 Python 项目 (python 3.6),它的包结构相当简单。我的目标是拥有一个包含模块的包,这些模块可以在其他包中重复使用。这是结构:
my_project
├── /docs
├── /src
│ ├── __init__.py
│ ├── /common
│ | |── __init__.py
│ | |── common_module.py
│ ├── /packageA
│ | |── __init__.py
│ | |── modA.py
问题是当我在 modA.py
中执行以下操作时:
from src.common import common_module as cm
我收到以下错误:ModuleNotFoundError: No module named src.common
到目前为止我尝试过的是
- 确保我有一个正确的包结构,如
https://docs.python.org/3/tutorial/modules.html
- 在我使用的虚拟环境中扩展 PYTHONPATH
export PYTHONPATH=<path_to_project>/src
- 也在
/my_project
中放置一个 __init__.py
- 阅读 Whosebug 上的其他问题,但其中 none 提供了解决方案。他们中的一些人正在用
sys.path
做一些骇人听闻的事情,据说这不是一个好的解决方案,即使它可行。
None 这些都有效,我已经为这个问题苦苦挣扎了一段时间,所以任何建议都将不胜感激。
为了使此导入工作,PYTHONPATH 需要是 .../my_project
,而不是 .../my_project/src
。
是的,你应该把 __init__.py
放在 project
,
然后 export PYTHONPATH = <LOCAL_PATH_TO_...>/project
我有一个 Python 项目 (python 3.6),它的包结构相当简单。我的目标是拥有一个包含模块的包,这些模块可以在其他包中重复使用。这是结构:
my_project
├── /docs
├── /src
│ ├── __init__.py
│ ├── /common
│ | |── __init__.py
│ | |── common_module.py
│ ├── /packageA
│ | |── __init__.py
│ | |── modA.py
问题是当我在 modA.py
中执行以下操作时:
from src.common import common_module as cm
我收到以下错误:ModuleNotFoundError: No module named src.common
到目前为止我尝试过的是
- 确保我有一个正确的包结构,如
https://docs.python.org/3/tutorial/modules.html
- 在我使用的虚拟环境中扩展 PYTHONPATH
export PYTHONPATH=<path_to_project>/src
- 也在
/my_project
中放置一个__init__.py
- 阅读 Whosebug 上的其他问题,但其中 none 提供了解决方案。他们中的一些人正在用
sys.path
做一些骇人听闻的事情,据说这不是一个好的解决方案,即使它可行。
None 这些都有效,我已经为这个问题苦苦挣扎了一段时间,所以任何建议都将不胜感激。
为了使此导入工作,PYTHONPATH 需要是 .../my_project
,而不是 .../my_project/src
。
是的,你应该把 __init__.py
放在 project
,
然后 export PYTHONPATH = <LOCAL_PATH_TO_...>/project