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

Python在Spyder中获取编码源文件真实路径的问题

解决Spyder中获取脚本所在路径的问题

嘿,我来帮你搞定这个路径问题~你遇到的情况其实是Spyder的运行机制导致的,我给你拆解原因和解决办法:

为什么当前代码不行?

  • 你用带引号的'__file__'时,Python会把它当成普通字符串,而不是内置的__file__变量,所以os.path.realpath会去查找名为__file__的文件,找不到就返回Spyder默认的工作目录(也就是你的用户目录)。
  • 直接用无引号的__file__报错,是因为Spyder默认用IPython内核以交互式方式运行脚本,这种环境下__file__变量不存在——只有当脚本以独立文件形式运行时,这个变量才会被设置。

解决方法1:让脚本以文件形式运行(推荐)

修改Spyder的运行设置,让脚本在独立环境中执行,这样__file__就能正常工作:

  1. 点击Spyder顶部菜单栏的Tools -> Preferences
  2. 找到Run选项,在General settings里,勾选Execute in an external system terminal或者Run in dedicated console(不同版本的选项名称可能略有差异)
  3. 保存设置后重新运行脚本,然后用下面的代码就能拿到正确的脚本所在目录:
import os
dir_path = os.path.dirname(os.path.realpath(__file__))
print(dir_path)

解决方法2:用Spyder API获取当前脚本路径

如果不想修改运行设置,可以直接调用Spyder的内置API来获取当前打开的脚本路径:

import os
from spyder.api.plugins import get_plugin

# 获取当前活跃的编辑器插件
editor_plugin = get_plugin('editor')
# 获取当前打开的脚本文件路径
current_script_path = editor_plugin.get_current_filename()

if current_script_path:
    script_dir = os.path.dirname(current_script_path)
    print(f"脚本所在目录:{script_dir}")
else:
    print("请先打开要运行的脚本文件哦")

关于os.getcwd()的补充

os.getcwd()返回的是当前工作目录,不是脚本所在目录。Spyder默认的工作目录是你的用户目录,你可以通过以下方式修改:

  • 点击Spyder右下角的当前工作目录显示区域,直接选择脚本所在文件夹
  • 或者通过File -> Set working directory来设置,不过这种修改是临时的,下次打开Spyder可能会恢复默认。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:45:25