路傍のプログラマ

只のプログラマが綴る愚痴と備忘録

psyco in Eclipse PyDev

2008-07-23 13:06:30 | プログラミング
PyDevを使って、Eclipseの中でPythonコードをいじっているとき、

何気なく、

import psyco
psyco.profile()

などと書いてしまうと、デバッガが「AttributeError: 'module' object has no attribute 'profile'」とメッセージを吐いて実行できません。

よくサンプルとして出されている以下のコードでも同じです。

try:
 import psyco
 psyco.profile()
except ImportError:
 pass

いい加減気になってきたので、原因を調べてみました。

PyDevのソースpydevd.pyに問題の部分が見つかりました。

エラーメッセージが出るまでの流れは、要するに、

・PyDevのデバッガがpsycoを自前でインポートする。
・デバッグの対象となるプログラムには偽物を見せるようになっている
(「sys.modules['psyco'] = pydevd_psyco_stub」とすることで)
・この偽物が、psyco.profile()のダミーを用意していないらしく、エラーになる。

原因が分かったので、安心してpsycoを使うことにします。

try:
 import psyco
 try:
  psyco.profile()
 except AttributeError:
  pass # the psyco is stub of PyDev
except ImportError:
 pass # not installed


最新の画像もっと見る