2011-12-28 12 views
15

私はWSGIをvirtualenv設定で実行しようとしています。 here説明するように、 mod_wsgiがWSGIPythonHomeを迎えていない

(virtualenv)dev:/var/www/app$ which python 
/var/www/virtualenv/bin/python 
(virtualenv)dev:/var/www/app$ python 
Python 2.6.1 (r261:67515, Dec 5 2008, 22:09:34) 
[GCC 4.1.2] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import importlib 
>>> 

そして、私のhttpd.confの

、私は次のことを持っている:私はすべての作業権利virtualenvのを持って

WSGIPythonHome /var/www/virtualenv 
WSGIPythonPath /var/www/virtualenv/lib/python2.6/site-packages 

をしかし、私は、Apache経由でアプリをロードしようとすると、次のエラーが表示されます。

[Wed Dec 28 12:28:15 2011] [error] [client 127.0.0.1] mod_wsgi (pid=15026): Exception occurred processing WSGI script '/var/www/app/wsgi.py'. 
[Wed Dec 28 12:28:15 2011] [error] [client 127.0.0.1] Traceback (most recent call last): 
[Wed Dec 28 12:28:15 2011] [error] [client 127.0.0.1] File "/var/www/app/wsgi.py", line 29, in <module> 
[Wed Dec 28 12:28:15 2011] [error] [client 127.0.0.1]  import importlib 
[Wed Dec 28 12:28:15 2011] [error] [client 127.0.0.1] ImportError: No module named importlib 

何が欠けていますか?この種の問題をどのようにデバッグするのですか?

+0

'importlib'は、ほとんどがPython 3のものです(ただし、非常に小さなサブセットが2.7で利用可能です)。それは2.6には全くありません。 – Amber

+1

申し訳ありませんが、コマンドラインから動作している場合は、Apacheからは動作しないはずですか? – zigdon

答えて

18

mod_wsgiは、強制的に使用しようとしているものとは異なるPythonバージョンに対してコンパイルされている可能性があります。たとえば、Python 2.6でコンパイルされたmod_wsgiを、Python 2.6で構築された仮想環境で使用することはできません。

まず、mod_wsgiがどのバージョンのPythonをビルドしたのかを検証します。

+0

ええ、間違ったバージョンを遵守しているというログのエントリがあります。さて、私は '--use-python =/var/www/virtualenv/bin/python'でビルドしようとしましたが、それでもやはり同じ警告が出ますか?私は使用すべき別のフラグがありますか? – zigdon

+1

オプションは--use-pythonではなく--with-pythonです。結果のmod_wsgi.soにlddを使用して、どのPython共有ライブラリのバージョンが使用されているかを確認してください。 http://code.google.com/p/modwsgi/wiki/CheckingYourInstallation –

+0

@GrahamDumpletonのドキュメントを読んで、私は好奇心が強いです...複数のmod_wsgiインスタンスを実行する方法がありますか(これはPythonのさまざまなバージョンに対してコンパイルされています)同じApacheプロセスの下で? –

関連する問題