import時にBad magic numberというエラーが出る
トップページ> "> 開発 "> Python

import時にBad magic numberというエラーが出る

  旧バージョンでコンパイルされた.pycファイルをimportしようとすると、こんなエラーが出力されることがある。

import PhysicsToolsP7
Traceback (most recent call last):
  File "<input>", line 1, in <module>
ImportError: Bad magic number in C:\Program Files\Smith Micro\Poser Pro 2012\Runtime\Python\lib\PhysicsToolsP7.pyc

 Bad magic number。

 .pycファイルは、バイナリエディタなどで見てみると先頭4バイトに「マジックナンバー」と呼ばれる4バイトのデータが入っていて、今使っているPythonのマジックナンバーと異なると、互換性がないとして上記のようなエラーを出すということだ。

 ちなみに、現バージョンのマジックナンバーを確認するにはこうすればOK。

import imp
imp.get_magic()
'\x03\xf3\r\n'

 そんでもって、pythonバージョンごとのマジックナンバーはこんな感じ。このマジックナンバー一覧は、Pythonのソースimport.cに記載されている。左がPythonバージョン、右がマジックナンバーだ。

1.5: 20121
1.5.1: 20121
1.5.2: 20121
1.6: 50428
2.0: 50823
2.0.1: 50823
2.1: 60202
2.1.1: 60202
2.1.2: 60202
2.2: 60717
2.3a0: 62011
2.3a0: 62021
2.3a0: 62011
2.4a0: 62041
2.4a3: 62051
2.4b1: 62061
2.5a0: 62071
2.5a0: 62081
2.5a0: 62091
2.5a0: 62092
2.5b3: 62101
2.5b3: 62111
2.5c1: 62121
2.5c2: 62131
2.6a0: 62151
2.6a1: 62161
2.7a0: 62171

 というわけで、pythonのバージョンがあがると.pycファイルは使えなくなる、ということらしい。

 ソースなしで.pycファイルのみで配布されているようなケースの場合、対象のpythonバージョンで.pycファイルを作り直すってことをしないと動かないようだ。ソースなしでコンバートする方法ないの?と色々探していたが、わからない。現時点ではとりあえずあきらめることにした。

  はてなブックマーク - import時にBad magic numberというエラーが出る  この記事にTwitterでつぶやく このページをはてなブックマーク


nenshu.png
予測年収600万円以下なら会社にしがみつけ?だと?


次のPyhon オブジェクトのヘルプを表示する help()へ
トップページ> "> 開発 "> Python もくじ