Import and absolute file names, sys.path including ''... or not

Jean-Michel Pichavant jeanmichel at sequans.com
Wed May 20 16:01:50 EDT 2009


You are right, but my concern is not the relative path resolution. Let 
me clarify:

/home/jeanmichel/test.py:
"import sys
print sys.path"

 >python.exe test.py
sys.path = ['/home/jeanmichel']
 > from within a python shell:
sys.path = ['']

The unpredictable effect of '' (at least something I did not predict) is 
that it allows absolute path resolution, while '/home/jeanmichel' cannot.
Example :
write a anotherTest.py file:
"
__import__('/home/jeanmichel/test')
"

anotherTest.py will be successfully imported in a python shell ('' + 
'/home/jeanmichel/test.py' is a valid path), but the "python.exe 
anotherTest2.py"  form will fail as it will try for '/home/jeanmichel' 
+'/home/jeanmichel/test.py' which is not a valid path.

So my question is: "why the shell is adding '' when the interpreter is 
adding the full path ?"

Hope I'm not too foggy.

JM

Aahz wrote:
> In article <mailman.406.1242754524.8015.python-list at python.org>,
> Jean-Michel Pichavant  <jeanmichel at sequans.com> wrote:
>   
>> I spent quite a time on a malicious issue. I found out that there is a
>> slight difference on the sys.path content when either executing code
>>     
> >from a shell or from within a script.  This difference is the '' item,
>   
>> which is present in the shell form of sys.path.
>>     
>
> Why are you calling this a malicious issue?
>
> When I do this test, I find that the current working directory's full
> path is prepended to sys.path, so if you're having problems, I bet that
> you're changing your working directory during program execution.
>   




More information about the Python-list mailing list