关于Python项目在Pycharm能运行,命令行运行则找不到模块的原因
Python解释器运行时会导入当前工作目录下的模块。当你在Pycharm中启动解释器时,当前的工作目录是项目根目录,但是当你通过命令行启动时,当前工作目录为你运行python文件时所在的目录。如果当时的位置不是项目目录,那么项目目录中的模块就不会被找到。
例如:
我的项目目录如下,运行项目需要执行 excute.py 文件
当在Pycharm上运行时,我们导入模块需要这样:
from main.http.xxx import xxx from main.tcp.xxx import xxx
但是,当我们使用命令行进入main目录执行 python excute.py 时,使用以上的导入方式就会出现 ModuleNotFoundError,就是找不到 main 这个模块。
from http.xxx import xxx from tcp.xxx import xxx
因为此时添加到环境变量的路径已经由 xxx/xxx/killer/ 变为 xxx/xxx/killer/main/