开发者

Unable to debug interactively with Python 2.7

开发者 https://www.devze.com 2023-02-21 11:16 出处:网络
I had asked a question previously on relative paths in pythonin SO question: How开发者_StackOverflow社区 can I access relative paths in Python 2.7 when imported by different modules

I had asked a question previously on relative paths in python in SO question: How开发者_StackOverflow社区 can I access relative paths in Python 2.7 when imported by different modules

The provided answer worked great in all of my scripts and functions. However, when trying to debug the files in IDLE (Python 2.7) it generates run time errors.

Can anyone point me to documentation on using the __file__ notation? Also I would like to understand why IDLE generates errors while running the sample code but running the same file from the command line or double clicking it (for the windows users) does not.

Any help would be greatly appreciated!

Note that I am running Python 2.7 on Windows XP with virtualenv (unactivated during these tests).

Sample Code

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

Error

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


__file__ won't be set if you're writing this in the interpretor.

So:

>>> 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

Is expected.

__file__ is the name of the file that was called by the python interpretor - so if you ran this from a script it would work.

$ python curdir.py
$

(The script is exactly the same as what I put into the interpretor, hence no error or output)

From what I've observed using IDLE before, it acts as an interpretor - so it'll run the file in question. However, it wasn't started with that file, so the __file__ is never set.

0

精彩评论

暂无评论...
验证码 换一张
取 消