Find path to currently running file
filesystems, python, reflection
Solution
`__file__` is NOT what you are looking for. Don't use accidental side-effects
`sys.argv[0]` is always the path to the script (if in fact a script has been invoked) -- see http://docs.python.org/library/sys.html#sys.argv
`__file__` is the path of the currently executing file (script or module). This is accidentally the same as the script if it is accessed from the script! If you want to put useful things like locating resource files relative to the script location into a library, then you must use `sys.argv[0]`.
Example:
C:\junk\so>type \junk\so\scriptpath\script1.py
import sys, os
print "script: sys.argv[0] is", repr(sys.argv[0])
print "script: __file__ is", repr(__file__)
print "script: cwd is", repr(os.getcwd())
import whereutils
whereutils.show_where()
C:\junk\so>type \python26\lib\site-packages\whereutils.py
import sys, os
def show_where():
print "show_where: sys.argv[0] is", repr(sys.argv[0])
print "show_where: __file__ is", repr(__file__)
print "show_where: cwd is", repr(os.getcwd())
C:\junk\so>\python26\python scriptpath\script1.py
script: sys.argv[0] is 'scriptpath\\script1.py'
script: __file__ is 'scriptpath\\script1.py'
script: cwd is 'C:\\junk\\so'
show_where: sys.argv[0] is 'scriptpath\\script1.py'
show_where: __file__ is 'C:\\python26\\lib\\site-packages\\whereutils.pyc'
show_where: cwd is 'C:\\junk\\so'
Problem
How can I find the full path to the currently running Python script? That is to say, what do I have to do to achieve this: ``` $ pwd /tmp $ python baz.py running from /tmp file is baz.py ```
Related problems
- How do I get the full path of the current file's directory?
- Determining application path in a Python EXE generated by pyInstaller
- how can i get the executable's current directory in py2exe?
- How do I get the path and name of the python file that is currently executing?
- How do I get the path and name of the python file that is currently executing?