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