sys.path and os.chdir

Anton Vredegoor anton at vredegoor.doge.nl
Sat Aug 24 16:26:52 CEST 2002


On 23 Aug 2002 06:22:59 -0700, Ugo_DiGirolamo at InVision.iip.com (ugodiggi)
wrote:

>Am I doing anything wrong?

Sys.path is determined at the time the script is started by the python
interpreter. Import is invoked after the working directory has changed, but
since there is an '' in sys.path[0], import takes this for the current working
directory.

However, the unofficial interpretation of sys.path[0] is that it is the
directory the script is started from.

So sys.path[0] should be 'd:\temp' whether the script is invoked with 

C:\>python D:\temp\test0.py 

or with:

D:\>D:
D:\>cd Temp
D:\Temp>python test0.py

but the second time sys.path[0] is '', which also stands for 'd:\temp' if one
relies on the unofficial interpretation. I would be in favour of making
sys.path[0] always be an absolute path, but maybe this cannot be done on
windows without breaking too much code.

Anton.

p.s.

This is probably what makes the example script work as expected:

## START test0.py
import os, sys

os.chdir('D:\\temp\\temp1')
cwd = os.getcwd()
#add cwd to the path after os.chdir()
sys.path.append(cwd)
print sys.path
print os.getcwd()
import test1
print
print 'Done'

## END   test0.py

## START test1.py
pass
## END   test1.py


test0.py is in D:\temp
test1.py is in D:\temp\temp1

now C:\>python D:\temp\test0.py should be ok.



More information about the Python-list mailing list