在Pycharm中,即可通过Run或Terminal直接运行.py文件,也可通过Python Console交互式地运行多行代码。但三者的默认路径不一样,搞不清楚的话容易报错 “xxx not found”
以如下项目架构为例:
假设要运行的test.py里包含命令:
import Module_A
from Module_B import submodule_B
from Module_C.A_class import a_class
- 若在Run中运行test.py,其自动将项目路径(Project_name的路径)和当前工作目录(Module_C的路径)添加到搜索路径列表中,所以上述3条命令都不会报错;
- 若在Python Console中运行上述命令,由于Python Console与项目绑定,虽然其默认路径中包含项目路径(Project_name的路径)而不包含当前工作目录(Module_C的路径),但上述3条命令也不会报错;
- 若右键test.py,选择open In->Terminal,则打开的terminal已经将路径定位到当前工作目录(Module_C的路径),但其路径搜索列表中不包括项目路径(Project_name的路径),所以运行上述命令会报错找不到Module_A,Module_B和Module_C,但将第3条命令改为from A_class import a_class不报错。
为了在终端Terminal运行上述命令,方法之一是在test.py文件内,在上述命令之前将项目路径添加到系统搜索路径中,这可以通过以下任一方法来实现:
法一:
import sys
import os
sys.path.append(os.path.dirname(os.getcwd()))
法二:
import sys
import os
sys.path.append(os.getcwd() + '/..')
法三:
import sys
import os
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
THE END
喜欢就支持一下吧