You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pandas.read_csv路径异常:IPython与VS Code Jupyter Notebook问题排查

解决Python文件读取路径与PYTHONPATH不匹配的问题

核心原因

PYTHONPATH仅负责引导Python查找模块/包的位置,完全不影响文件读取的相对路径逻辑。pd.read_csv('skew_all.csv')使用的是当前进程的工作目录(CWD),而非PYTHONPATH或脚本/笔记本所在目录,这是你遇到所有场景差异的根源。

针对性解决方案

方案1:强制统一工作目录到/code(最直接)

让所有环境的工作目录都指向/code,确保相对路径skew_all.csv始终指向/code/skew_all.csv:

  • 终端IPython:启动前先执行cd /code,或者启动后用IPython魔法命令%cd /code切换目录。
  • VS Code Jupyter:
    1. 打开设置(Ctrl+,),搜索Jupyter: Notebook File Root,设置值为/code;
    2. 或者在笔记本开头添加魔法命令%cd /code,强制切换工作目录。
  • 任意子目录启动的IPython/Jupyter:修改ipython_config.py,添加启动自动切换逻辑:
    c.InteractiveShellApp.exec_lines = [
        'import os; os.chdir("/code")'
    ]
    
    保存后重启IPython/Jupyter,无论从哪个目录启动,都会自动切换到/code。

方案2:使用绝对路径读取文件(更稳定)

如果不想依赖工作目录,可以通过模块位置或系统路径推导文件的绝对路径,彻底避免相对路径问题:

  • 对于Python脚本(比如errata下的模块):
    from pathlib import Path
    # 从当前脚本所在目录,向上找到/code目录
    root_dir = Path(__file__).parent.parent
    skew_file = root_dir / "skew_all.csv"
    pd.read_csv(skew_file)
    
  • 对于Jupyter笔记本:
    from pathlib import Path
    # 如果笔记本在/code/errata下,向上一级就是/code
    root_dir = Path.cwd().parent
    skew_file = root_dir / "skew_all.csv"
    pd.read_csv(skew_file)
    
    这种方式完全不受工作目录影响,适合跨环境复用。

验证方式

执行以下代码查看当前工作目录,确认是否符合预期:

import os
print(os.getcwd())

如果输出是/code,那么pd.read_csv('skew_all.csv')就能正常读取文件;如果不是,按照上述方案调整即可。

内容的提问来源于stack exchange,提问作者Dacian Peng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 15:27:17