This is a 2.7 only bug. F:\Python\mypy\tem2.py ---- print (__file__) __file__ should be set to relative or absolute path. From command line: F:\Python\mypy> c:/programs/python27/python.exe tem2.py tem2.py F:\Python\mypy> c:/programs/python27/python.exe -m tem2 F:\Python\mypy\tem2.py 3.3 gives same results. From Idle editor window with Run Module (F5): 3.3: >>> F:\Python\mypy\tem2.py # same as python -m above, and same as when file is imported. 2.7: >>> Traceback (most recent call last): File "F:\Python\mypy\tem2.py", line 1, in print (__file__) NameError: name '__file__' is not defined This is the bug to be fixed, if reasonably possible. Both 2.7 and 3.3 set __file__ on regular import (or rather, Idle does not disable this). >>> import tem2 F:\Python\mypy\tem2.py I think the first step should be to try this on non-Windows systems.
From Idle editor window (F5): >>> Traceback (most recent call last): File "/home/ci/Prog/mypy/tem2.py", line 1, in print(__file__) NameError: name '__file__' is not defined >>>