virtualenvs と django に問題があります。どうやら私は彼らがどのように機能するはずなのか理解していません。
/opt/bin/python に python 2.7.3 ucs2 をインストールしましたが、問題なく動作しました。
でpythonスクリプトを作成するとき
#!/home/alan/python/virtualenvs/py273ucs2/bin/python
import sys
print sys.maxunicode
私は ucs2 python に正しい 65535 を取得します。
同時に、django アプリに正しい仮想環境を使用する方法がわからないため、ucs4 ではなく ucs2 python を使用できます。そのwsgiファイルまたはmanage.pyが正しい環境でwsgiスクリプトを開始する方法についてのヒントを与えてくれると考えて、virtualenvwrapper.djangoで1つのテストプロジェクトを作成しようとしました-そのような運はありません。
このサイトを見つけました: http://www.saltycrane.com/blog/2009/05/notes-using-pip-and-virtualenv-django/
基本的に(私がすでに行った他のことに加えて)、これをwsgiファイルに追加するように指示します:
site.addsitedir('/srv/python-environments/saltycrane/lib/python2.5/site-packages')
私の場合は次のとおりです。
site.addsitedir('/home/alan/python/virtualenvs/py273ucs2/lib/python2.7/site-packages')
試してみました - 運が悪い。次に、そのようなページがあります: http://www.gyford.com/phil/writing/2011/06/27/virtualenv-webfaction.php 最後のページに加えて、次を追加することをお勧めします:
activate_this = os.path.expanduser("~/.virtualenvs/my_env_name/bin/activate_this.py")
execfile(activate_this, dict(__file__=activate_this))
私の場合は次のとおりです。
activate_this = os.path.expanduser("/home/alan/python/virtualenvs/py273ucs2/bin/activate_this.py")
execfile(activate_this, dict(__file__=activate_this))
再び運が悪い..見る
def base(request):
return HttpResponse(sys.version+' maxunicode ' +str(sys.maxunicode))
Python バージョン 2.7.2 と maxunicode 1114111 が 65535 ではなく出力されます。
次に、stackoverflow に次のメッセージがあります: How does django work with virtualenv? これは、httd.confにparamsを追加することを示唆しています-これも試してみましたが、機能しませんでした。
正直なところ、これはわかりません。おそらく、バージョンは2.7.2のままで2.7.3にはならないはずです...それでは、virtualenvsのポイントは何ですか...または、私は何か間違ったことをしていて、それらの例から何かを得ていません。また、virtualevns に関する wsgi wiki も確認しました。
http://code.google.com/p/modwsgi/wiki/VirtualEnvironments
httpd.conf を次のように変更しました。
WSGIPythonHome /home/alan/python/virtualenvs/py273ucs2
WSGIPythonPath /home/alan/python/virtualenvs/py273ucs2/lib/python2.7/site-packages
WSGIDaemonProcess printer user=alan group=alan processes=5 threads=5 python-path=/home/alan/python/virtualenvs/py273ucs2/lib/python2.7/site-packages
WSGIProcessGroup printer
WSGIScriptAlias / /home/alan/projects/printer/printer.wsgi
何もない。まだpython 2.7.2が表示されています...
誰かが私を助けてくれませんか:)
アラン
Edit1: コメントへの回答:
1) 仮想環境を使用したい場合、新しい mod_wsgi をインストール/コンパイルする必要がありますか? なぜ?
2) もしそうなら:
alan@alan:~$ workon py273ucs2
(py273ucs2)alan@alan:~$ cd projects/printer/
(py273ucs2)alan@alan:~/projects/printer$ python manage.py runserver
Validating models...
0 errors found
Django version 1.3, using settings 'printer.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
[08/Jul/2012 05:01:00] "GET / HTTP/1.1" 200 68
それから私の見解は私を示しています:
2.7.3 (デフォルト、2012 年 5 月 16 日 10:58:59) [GCC 4.6.1] maxunicode 65535
Edit2: modwsgi google グループの Graham Dumpleton の助けのおかげで、ucs2 python ( https://groups.google.com/forum/?fromgroups#!topic/modwsgi/F5Wn4uWrQAg ) に mod_wsgi をインストールできました。
しかし、私がこのサイトを開始すると、私はまだ取得します
2.7.2+ (デフォルト、2011 年 10 月 4 日 20:41:12) [GCC 4.6.1] maxunicode 1114111
いいえ
2.7.3 (デフォルト、2012 年 7 月 9 日 13:32:29) [GCC 4.6.1] maxunicode 65535
ところで、Apacheエラーログはこれを出力します:
[Mon Jul 09 14:13:19 2012] [警告] mod_wsgi: Python/2.7.3 用にコンパイルされています。[Mon Jul 09 14:13:19 2012] [warn] mod_wsgi: Python/2.7.2+ を使用したランタイム。
最終編集:
mod_wsgi のインストール方法にはいくつかの問題がありました。このリンクをたどると、必要なすべての情報を見つけることができます: https://groups.google.com/forum/?fromgroups#!topic/modwsgi/F5Wn4uWrQAg .
しかし、これらの問題の後、ポイントはUbuntu pythonのインストール方法が他のpythonと競合することでした(おそらく最良の説明ではありませんが、上記のリンクをたどるとGraham Dumpletonによる非常に良い説明が見つかります)。libapache2-mod-python パッケージを削除すると、仮想 python と mod_wsgi がすべて機能し始めました。それは他の問題を引き起こしましたが、それらの問題は ubuntu とその python パッケージのセットアップ方法によって引き起こされます。
あなたがubuntuユーザーで、たまたま同じ問題を見つけた場合は、このページとGraham Dupmpletonsの多大な努力がおそらくあなたにも役立ちます.