2

PyDev を使用して Eclipse で Python ファイルを実行するたびに、このエラーが発生します。

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を使用しています。ターミナル (2.7 または 2.6) から python を実行すると、この問題は発生しません。最後にすべてが機能してから私が変更した唯一の重要な点は、Snow Leopard から OSX Lion へのアップデートです。

これと同様の議論は、元々 .pyc ファイルを使用していたものとの間に何らかの不一致があるため、.pyc ファイルのある種の削除を示唆しているようです (マジック ナンバーが何であるかは完全にはわかりません...)。しかし、Frameworks ディレクトリから os.pyc を削除するという考えには少し慎重でした。他の唯一のファイルが os.py ではなく os.pyo ファイルである場合 (違いはわかりません)。

すべての OSX Lion アップデート、Eclipse アップデート、および PyDev アップデートをインストールしました。

この問題は、次のようなコードでも発生します。

if __name__ == '__main__':
    pass

これを解決するための助けをいただければ幸いです。

4

3 に答える 3

2

Pythonを2.7.1にアップグレードし、Pythonディレクトリにある「Update Shell Profile」コマンドファイルを実行し、新しいインストールに従ってNetbeansのPython設定を変更するとうまくいきました。

于 2011-09-09T10:50:48.443 に答える
1

ええ、*.py ファイルからすべての *.pycおよび*.pyo ファイルを再生成する必要があります。

これを行う方法は、最初にそれらがどのように生成されたかによって異なります。一部の Linux ディストリビューションなどの一部の python (およびアドオン) のパッケージ化は、それ自体の利益のために少し巧妙になりすぎて、元の *.py ファイルを別の場所に保持し、* を生成して配置するための独自のビルド システムを持っています。 .pyc および/または *.pyo ファイル。そのような場合、そのビルド システムを使用して元の *.py ファイルからそれらを再生成する必要があります。

参考までに、*.pyo ファイルに関するいくつかの リンクを次に示します。これらは、コンパイルされた Python モジュールの最適化されたバージョンです。

于 2011-08-21T19:18:12.667 に答える
0

OS X Lion では、os.py ファイルが必要です。これがエラーの根本的な原因である可能性があります。os.pyc ファイルは、現在実行しているバージョンとは異なるバージョンの Python から生成されました。通常、python インタープリターは .xml からファイルを再生成するだけだと思います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 バイトコードの最適化されたバージョンです。

于 2011-08-21T19:24:52.453 に答える