我的源代码树如下。我正在使用python3.7
:
proj/
src/
__init__.py
module1.py
module2.py
venv
__main__.py
[__main__.py
导入module1
,后者导入module2
。我正在虚拟环境中运行它。见下文:
在__main__.py
中:
import src.module1
...
在module1.py
中:
import module2
...
请注意,我确实在__init__.py
目录中具有src
文件。
[当我运行__main__.py
时,最终出现导入错误:
ModuleNotFoundError: No module named 'module2'
[我发现,如果我在虚拟环境之外运行程序,module1
可以导入module2
,但是在venv
中,我遇到了此错误。我很困惑如何正确地执行此工作,因为我相信我在这里使用绝对导入和__init__.py
正确地完成了所有操作。
src
模块中未使用绝对路径,因此我实际上没有使用绝对路径,这是我的问题。换句话说,将module1.py
更改为:
import src.module2
...
Python导入非常敏感!前几天我打破了我的整个项目...
第一:
export PYTHONPATH=/path/to/proj/
第二:
import src.module2
第三:在main.py中,如果要调用单个函数或变量,请执行[]
from src.module2 import x,y
用此代替
... import *