Silly import question (__file__ attribute)

Jack Diederich jack at performancedrivers.com
Thu Mar 9 17:25:20 EST 2006


On Thu, Mar 09, 2006 at 02:04:45PM -0800, mh wrote:
> So on most modules I import, I can access the .__file__ attribute to
> find the implementation.  ie:
> >>> import time
> >>> time.__file__
> '/data1/virtualpython/lib/python2.3/lib-dynload/timemodule.so'
> >>> import socket
> >>> socket.__file__
> '/data1/virtualpython/lib/python2.3/socket.pyc'
> 
> This doesn't work on the "thread" module:
> >>> import thread
> >>> thread.__file__
> Traceback (most recent call last):
>   File "<stdin>", line 1, in ?
> AttributeError: 'module' object has no attribute '__file__'
> 
> A few questions.  Why?  Where is thread.py or thread.so?  (I can't find
> it).
> 
Python 2.4.1 (#2, Mar 30 2005, 21:51:10) 
[GCC 3.3.5 (Debian 1:3.3.5-8ubuntu2)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> import thread
>>> sys.modules['thread']
<module 'thread' (built-in)>
>>> thread
<module 'thread' (built-in)>
>>> ^D
sprat:~# cd ~/src/python-head/Modules/
sprat:~/src/python-head/Modules# ls thread*
threadmodule.c  threadmodule.o

It is a built-in module so it doesn't have a .so (dll) or .py file
to mention.

-Jack



More information about the Python-list mailing list