Hatena::ブログ(Diary)

さり海馬 このページをアンテナに追加 RSSフィード

2010-08-25

Apache+mod_wsgiでPySVNを使ったらうまくいかないでござるの巻

あるいは 「"DLL not found" を解決するにはどうしたら…」

今さら python + Djangoウェブアプリなんか作っている thalion です。作ろうとしているのは:

という仕事をするもの。それほど複雑でもなさそうなので、Django勉強をかねて作ってみることに。ちなみに空いているマシンがなかったので、俺のデスクトップPCを使うことに。Windows XP SP3 + Python 2.6.2 + Django 1.1。

SVNリポジトリへのアクセス

SVN リポジトリからファイルを取り出す処理は、PySVN というとても素晴らしいパッケージがあるので、そっちを利用したら30分程度でできた。いつも思うんだけど、python ってこういう楽できる環境が素晴らしい。

Windowsの別プロセスpythonから使う

変換プログラムは、実は Java で書かれているんで困ったんだけど、python の subprocess を使うと意外と簡単にできる上に、戻り値まで拾えることが分かった。ありがたい。

zip

ありがとうございます。ほとんどそのまま利用します。

ダウンロード

これは django の HttpResponse() を使って簡単に。

で桶。

開発サーバー(manage.py runserver) でやってみる

…問題なく動く。おし。

デプロイサーバー Apache + mod_wsgi でやってみる

あたりを参考に。

暗礁

…あれ、上手くいかない。"DLL load failed: The specified module could not be found." pysvn の DLL がロードできないっていって、mod_wsgi で起動してる python スクリプトコケるよ?

別のプロジェクトを作って "Hello world" してみたら、そっちはまともに表示できるので、デプロイ自体ではなく、どうも apache で起動されているプロセスで、DLL検索パスが宜しくない感じ。

早速環境変数 "PATH" の最後に"C:\Python26\Lib\site-packages\pysvn"を追加して、念のためリブートしてやってみる。

…やっぱダメだ。どうやらこの環境変数をいじっても、apache が起動しているプロセスDLL検索パスに反映されないっぽい。

大技→挫折

DLL が見つからないのなら、見えるところに突っ込んじゃえばいいのよ。ということで、名前に重複がないのを確認した上で、上記のディレクトリ内にある pysvn の DLL 群と manifest ファイルを c:\windows\system32 の中にコピー

f:id:thalion:20100831112250g:image

…動くようにはなりましたが、manifestが正しくないってダイアログが出てしまって、そのボタンを押してやらないと処理がそこで進まなくなります…。むむむむ。