Mac下VSCode运行Python代码提示目录不存在,但PyCharm可正常运行
解决VSCode中Python脚本路径找不到文件的问题
问题根源
VSCode运行Python脚本时的工作目录和PyCharm默认行为不同:PyCharm默认将脚本所在的父目录设为工作目录,而VSCode默认可能使用打开的文件夹根目录或脚本所在目录,导致相对路径解析错误。VSCode的Jupyter Notebook则默认以notebook所在目录为工作目录,所以能正常找到文件。
具体解决方法
1. 先确认当前工作目录
在脚本开头添加代码,打印当前工作目录,验证路径问题:
import os print(os.getcwd())
对比输出路径与data目录的实际位置,就能明确路径解析错误的原因。
2. 最可靠的方案:动态构建绝对路径
不依赖工作目录,直接从脚本自身位置出发构建文件路径,适配任何运行环境:
import os import numpy as np # 获取脚本的绝对路径所在目录 script_dir = os.path.dirname(os.path.abspath(__file__)) # 跳转到脚本的父目录(与data同层级的目录) parent_dir = os.path.dirname(script_dir) # 拼接目标文件路径 weights_path = os.path.join(parent_dir, "data", "connectivity", "weights.txt") # 读取文件 weights = np.loadtxt(weights_path)
3. 修改VSCode运行配置的工作目录
通过launch.json指定运行脚本时的工作目录:
- 按F5运行脚本,若没有
launch.json,选择"创建launch.json文件",选"Python"环境 - 在
configurations数组中,添加或修改cwd字段:- 如果项目根目录就是
data和脚本的父目录,设为:"cwd": "${workspaceFolder}" - 如果脚本在子目录(如
src/script.py),要指向父目录:"cwd": "${fileDirname}/.."
- 如果项目根目录就是
- 保存后重新运行脚本即可。
4. 终端运行时手动切换工作目录
如果用VSCode内置终端运行脚本,先切换到data所在的父目录,再执行脚本:
cd /path/to/your-project-root python src/your_script.py
为什么之前的尝试无效?
- 手动写的绝对路径如果是固定本地路径,换环境会失效;若基于工作目录转绝对路径,还是受工作目录影响,无法根本解决。
- 添加
__init__.py是为了将目录标记为Python包,和文件系统路径解析无关,因此对路径问题无帮助。
内容的提问来源于stack exchange,提问作者BokiM
相关产品推荐
相关产品推荐

