mod_python
を使用してApacheで提供したい小さなweb.py
Pythonアプリケーションがあります。 web.py
フレームワークは、問題のアプリケーションが依存する他のサードパーティのPythonモジュールと同様に、仮想環境にインストールされています。私がしようとすると、ブラウザ上mod_pythonが仮想環境下でweb.pyモジュールを見つけることができません
<Location "/api">
PythonPath "['/home/ayaz/Sandbox/Scrapper/lib/python2.5/site-packages/', '/home/ayaz/project/'] + sys.path"
#PythonHandler wsgiref.modpython_gateway::handler
PythonHandler modpython_gateway::handler
SetHandler python-program
PythonOption wsgi.application device_api::main
PythonOption device_api /api/
</Location>
:/home/ayaz/Sandbox/Scrapper/
私は、このアプリケーションを設定するために使用していますApacheのバーチャルホストの設定から関連するスニペットはこれです:仮想環境が内部で作成されますしかし、 URLにアクセスしましたが、サーバーから500
が取得されました。ログには、device_api.py
ファイルからインポートされたweb
モジュールが見つかりませんでした。言い換えれば、私はImportError
を参照してください。なぜweb
モジュールが見つからないのかわかりません。
私はPythonPath
ディレクティブは、Pythonインタプリタは、そのディレクティブで定義されたパスからdevice_api.py
ファイルを見つけることができるという事実から判断し、少なくとも部分的に、動作していることを知っています。しかし、同じディレクティブでパスが定義されている残りのモジュールを見つけることはできません。
これについてのご支援をいただければ幸いです。
ありがとうございます!
UPDATE#1
Ned's reply私が持っている仮想環境のための
は、私は、Apacheはそれがsite-packages
ディレクトリ を通じて を見てくれていました。 権限が私にディレクトリ内の細かい のように見える間、私は を実現しましたmod_python/Apache
は はeggs
を読むことができませんでした。私が の仮想パッケージ内にすべてのパッケージをインストールしたので、それらはすべてeasy_install
を使って、 の卵になります。私は(基本的に卵 ファイル/ディレクトリからそれを取って)/home/ayaz/Sandbox/Scrapper/lib/python2.5/site-packages/
に ディレクトリ/home/ayaz/Sandbox/Scrapper/lib/python2.5/site-packages/web.py-0.34-py2.5.egg/web/
を移動するのであれば、例えば、mod_python
はもちろんの行方不明web
モジュール(文句 を停止し、それがその後、 を開始しましたサードパーティのモジュールである の残りの部分が欠落していると不平を言いました)。ayaz
で、私の ユーザーおよびグループとして実行するように設定している、と私 は/home/ayaz/.python-eggs
ディレクトリ のパーミッションは大丈夫だったことを確認しました。これを次に使用しましたUsing eggs with mod_pythonは のページの について説明しています。しかし、それは役に立たなかった。 は最終的に、私は弾丸ビット、および
mod_python
はそれが見つけられません でした訴え各サードパーティのモジュールのために、私は卵のそのモジュール 外のための卵の内部からとsite-packages
に実際のディレクトリ を移動しました仮想環境の ディレクトリ。これはmod_python
モジュールを見つけるようにした。今、なぜこの が起きているのかわからないのですが、なぜ
mod_python
が卵を読み取ることができないのですか。
mod_pythonは死んでおり、できるだけ早くmod_wsgiに移行することをお勧めします。 –
こんにちはイグナシオ。コメントありがとう。把握した。しかし、私にはいくつかの制約があります。少なくとも、mod_pythonの下で動作させたいと思っています。 – ayaz