处理IMDb API TSV文件出现NameError: name '__file__' is not defined报错如何解决
报错原因
__file__是Python的内置特殊变量,仅在以脚本模式执行的独立.py文件中会被自动赋值为当前文件的存储路径。你当前运行代码的环境是IPython/Jupyter Notebook(报错信息中的<ipython-input-xxx>前缀可证明),这类交互式运行环境不会自动定义__file__变量,因此代码中用__file__计算项目根目录的逻辑直接触发未定义报错。
解决方案
可根据你的使用场景任选以下一种方案修复:
- 方案1:将
TsvHandler类的完整定义代码转移到独立的.py文件中,在Jupyter Notebook里通过import导入该类后再调用,独立.py文件执行时会自动生成__file__变量,原路径计算逻辑可正常运行。 - 方案2:保留在Jupyter中直接定义使用类的逻辑,把动态获取根目录的代码替换为适配交互式环境的写法,根据你需要的3级父目录层级,示例修改如下:
# 替换原代码中 data_dir = pathlib.Path(__file__).parent.parent.parent.resolve() 行 import os data_dir = os.path.abspath(os.path.join(os.getcwd(), "../../.."))
- 方案3:本地调试时可直接写死根目录的绝对路径,不需要动态计算,示例修改如下:
# 将括号内的路径替换为你本地项目实际的根目录绝对路径即可 data_dir = pathlib.Path("/home/your_user/your_project_root/")
内容的提问来源于stack exchange,提问作者Masa Darwazeh
相关产品推荐
相关产品推荐

