我在OS X上使用Pycharm。
结构是:
/Project
/src
codeA.py
codeB.py
/Data
data.txt
src
被标记为Sources Root,Data
被标记为Resource root。
问题在于我是否在codeA.py中编写
import codeB
with open("./Data/data.txt",'r'):
pass
如果我
在控制台中逐行执行代码,可以找到该文件。
点击&#34执行;运行code.py"我会收到No Such File错误。
在终端执行codeA.py,我甚至无法导入codeB。
如果我改为编写../Data/data.txt
,则方法2可以运行,但方法1将获得No Such File Error。
我检查了项目解释器路径和控制台路径。他们是一样的。
有什么想法解决这个问题吗?非常感谢!
---------- ------------已编辑
正如Cyrbil所说,不要使用相对路径。他的解决方案完美地解决了这个问题。
这些错误的原因:
Pycharm控制台的工作目录是\Project
。但是,如果单击run codeA.py
,工作目录将更改为\Project\src
(我将pprint(os.getcwd())添加到codeA.py以查看它。因此,毫无疑问,方法1将会运行,而方法2赢得了
对于方法3,Pycharm自动将源根和内容根添加到PYTHONPATH。如果您在终端中运行代码,则必须由您自己执行此操作。
答案 0 :(得分:3)
Pycharm的控制台将包含项目根目录PYTHONPATH
。您可以在Settings > Build, Execution, Deployment > Console > Python Console
中查看并设置此内容。
您的运行配置可能有误,请确保工作目录正确,并选中Add content/source roots to PYTHONPATH
复选框。
为避免任何路径问题,建议使用绝对路径:
# get project path from main entry file
file_path = os.path.dirname(os.path.abspath(__file__))
project_path = os.path.abspath(os.path.join(file_path, os.path.pardir))
data_path = os.path.join(project_path, 'Data/data.txt')