几个月前,我使用PyCharm开发了一个项目,它运行得很好.现在,如果我想进入venv venv\Scripts\activate并从cmd python src\main.py开始项目,当main.py和其他文件try 从src导入内容时,我会收到ModuleNotFoundError No module named 'src'.当我将我的所有文件从src移到项目根文件夹时,它就会变得清晰起来.这个项目和我的Python环境发生了很多事情,但坦率地说,这不是重点.我想问的是,为什么在PyCharm main.py中从根目录"看到"了项目,但现在在命令行中却没有,以及如何处理它.

推荐答案

给定项目树

.
└── src
    ├── lib.py
    └── main.py

...有main.py

import src.lib

当您在PyCharm中运行main.py时,默认情况下它会将项目根添加到PYTHONPATH.因此,当Pythontry 解析import src.lib时,它会在项目根目录下成功地找到sys.path中的包src.

当您运行python src/main.py时-项目根目录不会添加到PYTHONPATH,只会添加到src/本身(已执行模块的父文件夹).因此,Python无法解析import src,因为在sys.path个条目下找不到src包.

我希望这是合理的.

您可以使用以下命令在终端中模拟PyCharm的行为

PYTHONPATH=. python src/main.py

Python相关问答推荐

Pytest两个具有无限循环和await命令的Deliverc函数

处理(潜在)不断增长的任务队列的并行/并行方法

为什么这个带有List输入的简单numba函数这么慢

如何更改分组条形图中条形图的 colored颜色 ?

PyQt5,如何使每个对象的 colored颜色 不同?'

Python Pandas获取层次路径直到顶层管理

如何在Python中使用另一个数据框更改列值(列表)

从Windows Python脚本在WSL上运行Linux应用程序

如何在BeautifulSoup/CSS Select 器中处理regex?

Maya Python脚本将纹理应用于所有对象,而不是选定对象

如何检测鼠标/键盘的空闲时间,而不是其他输入设备?

ConversationalRetrivalChain引发键错误

Gunicorn无法启动Flask应用,因为无法将应用解析为属性名或函数调用.'"'' "

Python 3试图访问在线程调用中实例化的类的对象

使用SeleniumBase保存和加载Cookie时出现问题

如何将一个文件的多列导入到Python中的同一数组中?

如何在基于时间的数据帧中添加计算值

如何让PYTHON上的Selify连接到现有的Firefox实例-我无法连接到Marionette端口

正则表达式反向查找

为什么在安装了64位Python的64位Windows 10上以32位运行?