ImportError: неверное магическое число, так как OSX Lion - PullRequest
2 голосов
/ 21 августа 2011

Я получаю эту ошибку каждый раз, когда запускаю любой файл python в Eclipse, используя PyDev:

Traceback (most recent call last):
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/site.py", line 73, in <module>
__boot()
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/site.py", line 2, in __boot
    import sys, imp, os, os.path   
ImportError: Bad magic number in /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/os.pyc

Я использую python 2.6.Эта проблема не возникает, когда я запускаю python из терминала (2.7 или 2.6).Единственное существенное, что я изменил с тех пор, как все работало в последний раз, - это обновление OSX Lion от Snow Leopard.

Подобные обсуждения, по-видимому, предполагают какое-то удаление файла .pyc из-за какого-то несоответствия между тем, что первоначально использовало файлы .pyc (я не совсем уверен, что такое магическое число...).Но я был немного осторожен с идеей удаления os.pyc из каталога Frameworks.Когда единственным другим файлом является файл os.pyo (не уверен, в чем разница), а не os.py.

Я установил все обновления OSX Lion, обновления Eclipse и PyDev.

Эта проблема возникает даже с таким кодом, как:

if __name__ == '__main__':
    pass

Буду признателен за любую помощь в решении этой проблемы!

Ответы [ 3 ]

2 голосов
/ 09 сентября 2011

Обновление Python до 2.7.1, запуск командного файла «Обновить профиль оболочки», который находится в каталоге Python, и изменение настроек Python в Netbeans в соответствии с новой установкой работали для меня.

1 голос
/ 21 августа 2011

Да, вам нужно будет восстановить все ваши файлы * .pyc и * .pyo из файлов * .py.

Как вы это сделаете, зависит от того, как они были созданы в первую очередь. Некоторая упаковка python (и его надстроек), такая как в некоторых дистрибутивах Linux, становится слишком умной для собственной пользы и сохраняет оригинальные файлы * .py где-то еще и имеет собственную систему сборки для генерации и размещения * Файлы .pyc и / или * .pyo. В таком случае вы должны использовать эту систему сборки, чтобы восстановить их из исходных * .py файлов.

К вашему сведению, здесь пара ссылок на * .pyo файлы. Это оптимизированные версии скомпилированных модулей Python.

0 голосов
/ 21 августа 2011

В OS X Lion у вас должен быть файл os.py. Вероятно, это основная причина вашей ошибки. Файл os.pyc был сгенерирован из другой версии python, чем вы используете сейчас. Обычно я представляю, что интерпретатор python просто восстановит файл из os.py. Но по какой-то причине в вашей системе нет этого файла.

Я подозреваю, что это небольшая точка данных в более широком наборе проблем, и, как правило, рекомендую переустановку операционной системы.

Для сравнения я использую 10.7.1, и у меня есть следующее:

[2:23pm][wlynch@orange workout] ls /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/os.*
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/os.py
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/os.pyc
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/os.pyo

Кроме того, файл * .pyo является оптимизированной версией байт-кода python.

...