So-net無料ブログ作成

ActivePython に同梱された PythonWin がクラッシュするお話 [プログラム三昧]このエントリーを含むはてなブックマーク#

PCでデバッグを行うために、ActiveStateActivePythonを使用しています。 Windows の再インストールに伴い、インストールしたのですが…

ActivePython はインストールしたけれど

ActivePythonを使っている理由は、エディタまでついてくるお手軽構成だからです。 インストールして、いざエディタである Pythonwin を起動してポチポチ…

あれ? 固まっちゃったよ?

あれ? 落っこちた!

何度も起動しなおして試してみましたが、一行も実行される気配がありません。 再インストールも試みましたが、どうにもこうにも、動きません。

Shell なら問題なし

GUIに問題があるかもしれないと思い、 "Python Interactive Shell" を起動してタイプしてみましたが、こちらはちゃんと動きました。 どうやら、問題があるのは Pythonwin のようです。

掲示板に解決策があった

そこで、 google さんにお願いして、どこかで問題になっていないか探してもらいました。 キーワード「pythonwin crash」で探すと、ありました。 「ActiveState Community Site」とまさにぴったんこです。

ActivePython 2.6 Pythonwin Crashes

最初に報告があったのが、2008年11月とそんなに古くもありません。 スレッドを紐解くと「MFC90.DLLの問題じゃないか」「ユーザのレジストリのせいだ」「特権を与えればいい」と、さまざまな解決策が出てきましたが、どれも決定的じゃないみたい。 本当に解決したのか心配になっていた所、2009年2月20日の投稿がありました。

問題は、解決した!

最新版の "scintilla.dll" ファイルが "www.dlldll.com/scintilla.dll_download.html" からダウンロードできて、 "pythonwin.exe" と同じ場所にある古いものと入れ替えることができる。

"pythonwin.exe" は、デフォルトでは、「C:\Python26\Lib\site-packages\pythonwin」にあります。

さっそく、ダウンロードしてみました。 古いファイルが 408,576バイトなのに対して、新しいファイルが 134,144バイトです。 ずいぶん、ダイエットしましたね。 本当に更新版なの?

半信半疑で入れ替えてみると、みごと動きました。

それぞれのファイルのバージョン情報を調べると、「新しい」"2.2.0.146"は"Editor control used by Pythonwin 1995-1998"とあり、「古い」"1.7.5.0"は"A Source Editing Component 1998-2007"とあります。 いったい、何があったんでしょうね。

これで、やっとプログラムを書き始められるわい。

参考文献

ActivePython は、この本で紹介されていたディストリビューションのひとつだったはずです。

初めてのPython 第2版

初めてのPython 第2版

  • 作者: マーク ルッツ
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2004/11
  • メディア: 単行本

nice!(0)  コメント(2)  トラックバック(1)  このエントリーを含むはてなブックマーク#

nice! 0

コメント 2

noritan

Windows の再インストールのついでに、ActivePython 2.6.4.8 を入れてみましたが、Pythonwinは、相変わらずクラッシュします。scintilla.dllを入れ替えたら、落ちなくはなりました。まあ、深く考えないことにしておこう。
by noritan (2009-12-01 14:01) 

masujin

pythonのmatplotlibを使ってみたかったので、いやー本当に助かりました。
べつのパソコンでは何の問題もなく動作するのに私個人のマシーンではメモリーエラーがでて、途方にくれていたところ、本ページに行き当たり助かりました。ありがとうございました。
「地獄で仏」というのはこうゆうことをいうのでしょう。
by masujin (2011-07-20 11:07) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 1

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。