名称错误:名称“__file__”未定义。

5
我试图使用以下代码将脚本路径存储到一个变量中:
os.path.abspath(os.path.dirname(__file__))

然而,它一直返回一个 name '__file__' is not defined 错误。

here = os.path.dirname(os.path.abspath(__file__))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name '__file__' is not defined

1
请编辑问题而不是在评论中添加额外信息。 - Hampus Larsson
2个回答

15

我相信你正在交互式Python终端中运行此程序,因为这是唯一一个我知道的没有__file__的地方。

尝试在实际脚本中运行。这应该可以正常工作。


6

我在Spyder中测试/调试类时经常遇到这个问题(几乎每天都会发生)。解决方法很简单:将__file__变量定义为您正在测试的py模块的名称。

在解释器中输入:

__file__ = 'modulename.py'

然后再次运行脚本。这种方法从未给我带来过问题。


1
这不太易于维护。如果你重命名模块,你的代码很可能会出问题。这个变量不应该需要手动定义。 - byxor
1
@byxor - 我没有经历过这是真的。重命名__file__仅为该实例重命名。当从CLI(而不是调试)正确运行脚本时,它会自动分配并且一切正常。我一次又一次地使用它 - 从未遇到过问题。 - S3DEV
1
这是一个不错的技巧,可以探索和测试包含“os.path.abspath(os.path.dirname(file))”代码。谢谢。 - Rich Lysakowski PhD

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接