我有一个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
中正确的软件包结构export PYTHONPATH=<path_to_project>/src
所使用的虚拟环境中扩展PYTHONPATH __init__.py
放在/my_project
内sys.path
进行了骇人听闻的工作,据说即使可行,这也不是一个好的解决方案。这些都不起作用,我已经在这个问题上苦苦挣扎了一段时间,因此任何建议都将受到赞赏。
答案 0 :(得分:2)
为了使此导入正常进行,PYTHONPATH必须为.../my_project
,而不是.../my_project/src
。
答案 1 :(得分:1)
是的,您应该将__init__.py
放在project
中,
然后export PYTHONPATH = <LOCAL_PATH_TO_...>/project