Am 27.07.2011 03:32, schrieb harrismh777: > Christian Heimes wrote: >> The first four bytes of a pyc file contain the magic header. It must >> match the magic of the current Python version. The next four bytes >> contain the pyc_mtime. It must match the mtime of the corresponding .py >> files as returned by fstat().st_mtime. If the magic doesn't match or the >> mtime header doesn't match the mtime of the .py file, the pyc is ignored. > > ... so recompile is required to fix.
It's not required, you can fake a .py file with a trick: >>> import os, struct, datetime First get the magic and mtime from the pyc file >>> with open("test.pyc", "rb") as f: ... header = f.read(8) ... >>> magic, mtime = struct.unpack("ii", header) >>> magic, mtime (168686339, 1311717735) Verify it's a good date >>> datetime.datetime.fromtimestamp(mtime) datetime.datetime(2011, 7, 27, 0, 2, 15) Now create an empty test.py >>> open("test.py", "w").close() Set its mtime >>> os.utime("test.py", (mtime, mtime)) Now the test.py has the same mtime as test.pyc and Python won't recompile the .pyc file from the .py file as long as the magic header (168686339) is correct. Christian -- http://mail.python.org/mailman/listinfo/python-list