How did I screw this up?

Christopher T King squirrel at WPI.EDU
Fri Jul 23 18:25:18 CEST 2004


On Fri, 23 Jul 2004, Widgeteye wrote:

> I deleted the file and rebooted (silly I know) but nothing seems to help.
> What do I do now and what happened?????

Initially what happened is that the 'import random' chose your script 
(random.py) to import, rather than the builtin one.  This is normal Python 
behaviour, and for that reason you shouldn't give your script the same 
name as a builtin library you want to use.

The reason why this kept happening, even after you deleted random.py, is 
(I believe) because there is still a random.pyc in your /shared/src 
directory.  This is a compiled version of random.py that is built whenever 
Python imports a module, and the .py file is newer than the .pyc file.  In 
your case, what I think is happening is that Python is loading the 
local .pyc file (which contains your code), hitting the error, and then 
printing a traceback using the only random.py it can find, i.e. the 
builtin one (which makes it seem like it was overwritten).  The .pyc is 
not being rebuilt because it is newer than what Python thinks is the 
corresponding .py file (and always will be).  The solution in this case is 
simply to delete the /shared/src/random.pyc file.

If that's not the case, and /usr/local/lib/python23/random.py really is 
corrupted (open it and see if it contains your code first), you can 
download random.py from (sorry for the long URL)
http://cvs.sourceforge.net/viewcvs.py/python/python/dist/src/Lib/random.py?rev=1.62&view=log
and use it to replace the broken random.py. *Don't* do this unless you 
confirm that the .pyc file is not the culprit.

Hope this helps.




More information about the Python-list mailing list