ModuleNotFoundError:Python 文件在 Pycharm 内部和外部的行为似乎有所不同

问题描述 投票:0回答:1

几个月前,我使用 PyCharm 开发了一个项目,并且运行得很好。现在,如果我想进入 venv

venv\Scripts\activate
并从 cmd
python src\main.py
启动项目,当 main.py 和其他文件尝试从 src 导入内容时,我会收到
ModuleNotFoundError No module named 'src'

当我将所有文件从 src 移动到项目根文件夹时,它就恢复正常了。这个项目和我的 Python 环境发生了很多事情,但坦率地说,这不是重点。

为什么 main.py 在 PyCharm 中从根目录“看到”项目,但现在在命令行中却看不到?我该如何处理?

python pycharm
1个回答
2
投票

给出项目树

.
└── 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
© www.soinside.com 2019 - 2024. All rights reserved.