how to get the path of a module (myself) ?

Steven D'Aprano steve at REMOVE-THIS-cybersource.com.au
Mon Jun 1 20:00:49 EDT 2009


On Tue, 02 Jun 2009 01:46:23 +0200, Stef Mientki wrote:

> MRAB wrote:
>> Stef Mientki wrote:
>>> hello,
>>>
>>> I've pictures stored in a path relative to my python source code. To
>>> get a picture, I need to know what path I'm on in each python module.
>>> I thought __file__ would do the job,
>>> but apparently I didn't read the documentation carefully enough,
>>> because file is the path to the module that called my module.
>>>
>>> Any ways to get the path of "myself" ?
>>>
>> I'm not sure what you mean. I just did a quick test.
>>
>> # File: C:\Quick test\child.py
>> print "name is %s" % __name__
>> print "file is %s" % __file__
>>
>> # File: C:\Quick test\parent.py
>> import child
>>
>> print "name is %s" % __name__
>> print "file is %s" % __file__
>>
>> # Output:
>> name is child
>> file is C:\Quick test\child.py
>> name is __main__
>> file is C:\Quick test\parent.py
> Yes, that's what I (and many others) thought, but now put your code in a
> file, let's say the file "test.py", and now run this file by :
>     execfile ( 'test.py' )

In that case, test.py is not a module. It's just a file that by accident 
has a .py extension, which is read into memory and executed.

If you bypass the module mechanism, don't be surprised that you've 
bypassed the module mechanism :)

What are you trying to do? Using execfile is probably not the right 
solution.



-- 
Steven



More information about the Python-list mailing list