Форум сайта python.su
1
crchemistBullshit, .pyc файлы независимы от платформы. Они могут быть разными только если версии питона не совпадают. Байт код это не машинный код, он хотя “откомпилированный”, все ровно интерпретируется.
Формат *.pyc на різних платформах різний. пітон для 32бітної машини не буду виконувати *.pyc який скомпілений на 64-бітній.
Офлайн
0
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)
Офлайн