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

sys.path.insert(0, '..')在py文件中失效但Jupyter Notebook可用的原因?

问题原因及解决方法

核心问题是相对路径..的解析基准不同:

  • 在Jupyter Notebook中,代码的执行基准是Notebook的「当前工作目录」——你打开Notebook时所在的文件夹(大概率是上级主文件夹,或是你手动切换到了子文件夹),此时..能正确指向包含python_environment_check.py的主文件夹,所以导入成功。
  • 直接运行py文件时,相对路径..的解析基准是终端/命令行的当前工作目录,而非脚本文件所在的目录。比如你在主文件夹下执行python 子文件夹/你的脚本.py,此时..指向的是主文件夹的上级目录,根本找不到目标模块;哪怕进入子文件夹运行脚本,也可能因为系统路径的缓存或解析逻辑问题导致失效。

解决办法

不要依赖不确定的相对路径,改用脚本文件的绝对路径来构造上级目录:

import sys
import os

# 获取当前脚本的绝对路径
script_path = os.path.abspath(__file__)
# 获取脚本所在目录的上级目录(也就是主文件夹)
parent_dir = os.path.dirname(os.path.dirname(script_path))
# 将主文件夹添加到Python的模块搜索路径
sys.path.insert(0, parent_dir)

from python_environment_check import check_packages

这样不管你在哪个目录下运行这个脚本,都能准确找到上级主文件夹里的模块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 13:14:56