NameError: name '__file__' is not defined

505 阅读1分钟

NameError: name '__file__' is not defined 这个错误通常出现在交互式环境(如 Jupyter Notebook)中,因为 __file__ 变量在这种环境中未定义。

解决方案

1. 使用当前工作目录

如果在 Jupyter Notebook 中,通常可以使用 os.getcwd() 获取当前工作目录,而不是 __file__。示例如下:

import os

BASE_DIR = os.getcwd()  # 获取当前工作目录

2. 手动设置路径

如果项目结构固定,可以手动设置 BASE_DIR

BASE_DIR = '/path/to/your/project'

3. 在脚本中使用

如果是在一个 Python 脚本中运行代码,确保在脚本中使用 __file__,如下所示:

import os

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

示例代码

假设在 Jupyter Notebook 中使用:

import os
import sys

# 使用当前工作目录
BASE_DIR = os.getcwd()
sys.path.append(BASE_DIR)

# 从 log 模块导入
from log import log_system

总结

在 Jupyter Notebook 中使用 os.getcwd() 替代 __file__ 可以避免 NameError。在脚本中使用 __file__ 则是正常做法。根据具体使用环境选择合适的方法即可。