Wayne Werner wrote:
Including the sister bug - continually importing something and you still get the old function because you forgot to delete the .pyc file. Whoops!
Er, whoops is right... I think you may have misinterpreted what you were seeing.
When you import a module for the first time, Python checks the date stamps on the .pyc file (if it exists) and ONLY uses it if it is newer than the .py file. If you update the source code, and then import the module, the obsolete .pyc file will be ignored and over-ridden. You don't have to delete the .pyc file in order for Python to use a newer source file.
However, if the date stamps are screwed up, of course anything could happen. Or if you move the .pyc files into an earlier part of the PYTHONPATH, so they are seen before the .py files.
Note also that what I described only occurs the first time you import a module. The second and subsequent time you import a module, it is not retrieved from either the .py or the .pyc file, it is retrieved from the cache in sys.modules.
Python is not really designed for reloading modules on the fly. There is the reload() function (built-in in Python 2.x, moved into a library in Python 3.x) but it is a fairly feeble thing, only good for the most simple interactive use. Unless you're using a library that offers proper reload functionality, the safest way to ensure you're using the latest version of the module you've just edited is to exist the interpreter and start it up again.
-- Steven _______________________________________________ Tutor maillist - [email protected] To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor
