sys.path and os.chdir

ugodiggi Ugo_DiGirolamo at InVision.iip.com
Fri Aug 23 15:22:59 CEST 2002


I have the following script:

## START test0.py
import os, sys

os.chdir(r'D:\temp\temp1')
cwd = os.getcwd()
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


I try to run the script as follows:

C:\>c:

C:\>cd C:\

C:\>python D:\temp\test0.py
['D:\\temp', 'C:\\', 'D:\\python22\\DLLs', 'D:\\python22\\lib',
'D:\\python22\\lib\\lib-tk', 'D:\\python22',
'D:\\python22\\lib\\site-packages',
'D:\\python22\\lib\\site-packages\\Numeric']
D:\temp\temp1
Traceback (most recent call last):
  File "D:\temp\test0.py", line 8, in ?
    import test1
ImportError: No module named test1


And as follows:

D:\>D:
D:\>cd Temp
D:\Temp>python test0.py
['', 'D:\\Temp', 'D:\\python22\\DLLs', 'D:\\python22\\lib',
'D:\\python22\\lib\\lib-tk', 'D:\\python22',
'D:\\python22\\lib\\site-packages',
'D:\\python22\\lib\\site-packages\\Numeric']
D:\temp\temp1

Done

D:\Temp>



Obviously the problem is caused by the fact that my sys.path contains
'' when I invoke the script from the same dir, but contains the full
path of the script 'D:\\temp' when I invoke the script from another
dir.

So, calling os.chdir has no longer any effect when running the script
from another dir.

In order to fix it, I've tried to add '.' to my PYTHONPATH but it does
not solve the problem.

I guess I might explicitly append '' to sys.path in the script, but
this is not exactly a desirable solution (I would need to do it on
each script!).

Am I doing anything wrong?

Thank you!

Cheers

Ugo



BTW, I'm running 
Python 2.2.1 (#34, Apr  9 2002, 19:34:33) [MSC 32 bit (Intel)] on
win32



More information about the Python-list mailing list