Форум сайта python.su
Python 2.3 компилированные файлы в винде были перенесены на хостинг с юникс и Python 2.5 - ошибка:
ImportError: Bad magic number in ….путь…/mymod.pyc
В литературе четко об этом информации не видел, но общие слова про кроссплатформенность говорят что все должно работать без новой копиляции.
Прошу прокоментировать.
Офлайн
говорят что все должно работать без новой копиляции.установите python той же версии и всё будет работать
Офлайн
Верно. pyc файлы кроссплатформенные. Но в начале каждого файла идет заголовок. В нем указывается номер версии Питона, которым этот файл был создан.
Это важно, потому что байткод изменяется от версии к версии, добавляются новые инструкции а старые начинают работать немного иначе.
Чтобы избавить себя от головной боли обратной совместимости хотя бы для pyc файлов (которые разработчики предпочитают рассматривать только как кеш, основа - исходный py код - OpenSource и все такое) считается, что pyc совместимы только в пределах главной версии - 2.4, 2.5, 2.6, 3.1 и т.д
На самом деле может быть несовместимость между альфа и бета версией (разные magic code) - но после выхода в релиз ничего не поменяется, это гарантированно.
Офлайн
Андрей СветловНаверное стоит добавить, что это и есть “magic number”…
в начале каждого файла идет заголовок
Офлайн
если быть точным, заголовок состоит из 8 байт - 4 на magic number и 4 на время создания pyc файла.
Офлайн