运行Python代码报NameError: name '__file__' is not defined如何解决
报错触发原因
__file__是Python内置变量,仅当代码以.py脚本文件形式运行时才会被自动定义,存储的是当前脚本的本地路径。- 该报错说明你当前是在交互式运行环境中执行代码,常见的场景包括Python原生shell、Jupyter Notebook/Lab、IPython、IDE的交互式代码面板等,这类环境没有对应实体脚本文件,因此不会生成
__file__变量,直接调用就会触发NameError。
解决方法
根据你的使用场景选对应方案即可:
- 临时调试/交互式环境运行:直接替换
__file__相关的路径逻辑,用当前工作目录替代即可,修改后的完整可用代码如下:
# 注意提前导入依赖 import os import time import numpy as np from tensorflow.keras.datasets import mnist from tensorflow import keras path_wd = os.path.abspath( os.path.join( # 替换原__file__部分为获取当前工作目录的方法 os.getcwd(), '..', 'temp', str(time.time()) ) ) os.makedirs(path_wd) # GET DATASET # (x_train, y_train), (x_test, y_test) = mnist.load_data() # Normalize input so we can train ANN with it. # Will be converted back to integers for SNN layer. x_train = x_train / 255 x_test = x_test / 255 axis = 1 if keras.backend.image_data_format() == 'channels_first' else -1 x_train = np.expand_dims(x_train, axis) x_test = np.expand_dims(x_test, axis)
- 保留原
__file__逻辑:将完整代码保存为后缀为.py的独立文件,在终端通过python 你的文件名.py命令运行即可。
另外你提供的原始代码还有几处小问题需要提前修正:缺少相关依赖导入语句、中间有无效的enter code here标记、末尾有多余的.符号,运行前记得删除调整。
内容的提问来源于stack exchange,提问作者Ramapati
相关产品推荐
相关产品推荐

