无法使用Python 2.7进行交互式调试

时间:2011-04-03 04:02:05

标签: python python-idle

我之前在py问题中询问了一个关于python中相对路径的问题:How can I access relative paths in Python 2.7 when imported by different modules

所提供的答案在我的所有脚本和函数中都很有用。但是,在尝试调试IDLE(Python 2.7)中的文件时,它会生成运行时错误。

有人能指出我使用__file__表示法的文档吗?另外,我想了解为什么IDLE在运行示例代码时会产生错误,但是从命令行运行相同的文件或双击它(对于Windows用户)则不会。

非常感谢任何帮助!

请注意,我在Windows XP上使用virtualenv运行Python 2.7(在这些测试期间未激活)。

示例代码

import os
import sys
curdir = os.path.dirname(__file__) 
sys.path.append(curdir + '/..')

错误

Traceback (most recent call last):
File "C:\MyFile.py", line 3, in `<module>`
  curdir = os.path.dirname(`__file__`)
NameError: name '`__file__`' is not defined

1 个答案:

答案 0 :(得分:3)

如果你在解释器中写这个,那么

__file__将不会被设置。

所以:

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

预期。

__file__是python解释器调用的文件的名称 - 所以如果你从脚本运行它,它就可以工作。

$ python curdir.py
$

(该脚本与我放入解释器的脚本完全相同,因此没有错误或输出)

从我之前使用IDLE观察到的,它充当了解释器 - 所以它将运行有问题的文件。但是,该文件没有启动,因此永远不会设置__file__