0

Actually I found the solution of my main problem "Get the full path to the directory a Python file is contained in" from the previous answer : Find current directory and file's directory.

And the code below from the answer works well if I run my entire script, in other words, hotkey F5.

import os 
dir_path = os.path.dirname(os.path.realpath(__file__))

However, if I just select the two lines of the above code and run it, in other words, hotkey F9. Then I will receive the error below:

NameError: name '__file__' is not defined

So if anyone happens to know why the error occurs, please give a brief explanation.

Thanks a lot!

By the way, i used Spyder (Python 2.7).

a_guest
  • 34,165
  • 12
  • 64
  • 118
zlpython
  • 29
  • 6

1 Answers1

1

Inside Spyder or any interactive python process, the constant __file__ is not defined.

When you run the whole script, Spyder basically run the following command:

$ python script.py

While, if you select those two lines, it's more like entering a interactive python process first, then interpret the statements:

$ python
Python 2.7.13 (default, Jun 12 2017, 17:25:44) 
[GCC 5.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os 
>>> dir_path = os.path.dirname(os.path.realpath(__file__))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name '__file__' is not defined
>>> 

That's the difference.

lwshang
  • 81
  • 4