几个月前,我使用 PyCharm 开发了一个项目,并且运行得很好。现在,如果我想进入 venv
venv\Scripts\activate
并从 cmd python src\main.py
启动项目,当 main.py 和其他文件尝试从 src 导入内容时,我会收到 ModuleNotFoundError No module named 'src'
。
当我将所有文件从 src 移动到项目根文件夹时,它就恢复正常了。这个项目和我的 Python 环境发生了很多事情,但坦率地说,这不是重点。
为什么 main.py 在 PyCharm 中从根目录“看到”项目,但现在在命令行中却看不到?我该如何处理?
给出项目树
.
└── src
├── lib.py
└── main.py
...与
main.py
import src.lib
当您在 PyCharm 中运行
main.py
时,它默认将项目根添加到 PYTHONPATH
。因此,当 Python 尝试解析 import src.lib
时,它会成功在项目根目录下的 src
中找到包 sys.path
。
当您运行
python src/main.py
时 - 项目根不会添加到 PYTHONPATH
,仅添加到 src/
本身(已执行模块的父文件夹)。因此 Python 无法解析 import src
,因为在 src
条目下找不到 sys.path
包。
我希望这是有道理的。
您可以在终端中模拟 PyCharm 的行为
PYTHONPATH=. python src/main.py