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

Python如何获取当前执行脚本所在目录 解决__file__未定义问题

报错原因说明

你遇到的NameError: name '__file__' is not defined报错,是因为你当前是在IPython交互式环境中测试代码,__file__是Python脚本的内置变量,仅在直接执行.py脚本文件时会自动生成,交互式运行环境不存在该变量,正常执行python main.py脚本时不会触发该报错。

正确实现方案

你只需要在修改工作目录前,提前存储好main.py所在的绝对路径即可,不要在切换目录后再获取路径,实现代码如下:

import os

# 脚本启动后第一时间存储自身所在目录,避免后续目录切换后无法定位
# 获取当前脚本的绝对路径
script_path = os.path.abspath(__file__)
# 提取脚本所在的目录路径
main_py_dir = os.path.dirname(script_path)

# 切换到项目2的目录,此处用os.path.expanduser解析~为用户根目录,避免跨系统兼容问题
os.chdir(os.path.expanduser('~/project2/code/'))

# 后续需要切回main.py所在目录时,直接调用提前存储的路径即可
os.chdir(main_py_dir)

特殊场景兼容(需在交互式环境运行代码的情况)

如果你确实需要在IPython/Jupyter环境中运行对应逻辑,可以用以下代码做兼容处理:

import os
import sys

try:
    # 脚本运行场景优先用__file__获取路径
    main_py_dir = os.path.dirname(os.path.abspath(__file__))
except NameError:
    # 交互式运行场景取当前工作目录作为替代
    main_py_dir = os.getcwd()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:24:03