Форум сайта python.su
crchemistBullshit, .pyc файлы независимы от платформы. Они могут быть разными только если версии питона не совпадают. Байт код это не машинный код, он хотя “откомпилированный”, все ровно интерпретируется.
Формат *.pyc на різних платформах різний. пітон для 32бітної машини не буду виконувати *.pyc який скомпілений на 64-бітній.
Офлайн
nerijusПодивись сорси пітона. . Python/import.c:load_compiled_module :
Bullshit, .pyc файлы независимы от платформы.
import.c:load_compiled_moduleЯк бачимо перших N байт в pyc файлі мають тип long. Тип long на різних плаформах має різний розмір. Якщо компілиш pyc на 32бітах то magic запишеться в 4байти. І якщо потім ти той pyc спробуєш зчитати на 64бітах то зчитається 8байт. Вже на самому початку буде поламаний файл.
792 long magic;
….
796 magic = PyMarshal_ReadLongFromFile(fp);
http://www.ualberta.ca/CNS/RESEARCH/LinuxClusters/64-bit.htmlPS. Я дивився Python-2.7.1
In a 64-bit environment, the size of the C long data type is 64 bits.
Отредактировано (Янв. 19, 2011 14:49:27)
Офлайн