2

これまでのところ、非常に簡単な(そして楽しい)ように見えるdjangoの入門作業を行っていますが、redhatに付属のpythonが2.4だったため、/opt/local(RedHat 5.3)にインストールしたPython 2.6からこれらすべてを行っています. シンボリックリンクを設定しました:

/usr/bin/python2.6 -> /opt/local/bin/python

これまでのところ、すべてのジャンゴのものにそれを使用してきました。すなわち

> python2.6 manage.py runserver

ただし、本番モードに移行しようとすると、mod_python は正しいバージョンの python を使用していません。

Mod_python error: "PythonHandler django.core.handlers.modpython"

Traceback (most recent call last):

  File "/usr/lib/python2.4/site-packages/mod_python/apache.py", line 287, in HandlerDispatch
    log=debug)

  File "/usr/lib/python2.4/site-packages/mod_python/apache.py", line 461, in import_module
    f, p, d = imp.find_module(parts[i], path)

ImportError: No module named django

/etc/httpd/conf/httpd.conf にこれがあります:

<Location "/chat">
 SetHandler python-program
 PythonHandler django.core.handlers.modpython
 SetEnv DJANGO_SETTINGS_MODULE chat.settings
 PythonDebug On
 PythonPath "['/www/django/chat', '/opt/local/lib/python2.6/site-packages/django/'] + sys.path"
</Location>

私の質問は、mod_python が python ではなく python2.6 を探すようにするにはどうすればよいですか?

4

3 に答える 3

4

python2.6インストールに対してmod_pythonを再構築する必要があります。mod_pythonはPythonをライブラリとしてロードするため、バージョンはコンパイル時に修正されます。

于 2010-01-27T14:50:38.150 に答える
3

mod_python はもう使用しないでください。mod_wsgi は、Django アプリケーションを今すぐデプロイするための推奨される方法です。

于 2010-01-27T15:47:10.673 に答える
2

libpythonに動的にリンクするように mod_python再構築して、libpython のバージョン更新を取得できるようにすることができますが、それには多少の策略が必要です。

次のように mod_python の構成スクリプトを編集する必要があります (-L${PyLIBPL} を削除します)。

$ diff  configure.orig configure 
<   LDFLAGS="${LDFLAGS} -L${PyLIBPL}"
---
>   LDFLAGS="${LDFLAGS}"

それからする

--with-python=/path/to/bin/python を設定します。作る; インストールダンスを作ります。

実行すると:

ldd mod_python.so

次のような行が表示されます。

libpython2.6.so.1.0 => /usr/lib/libpython2.6.so.1.0

于 2010-01-28T20:47:39.423 に答える