1

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の多大な努力がおそらくあなたにも役立ちます.

4

2 に答える 2

0

まだインストールしていないPythonバージョンのvirtualenvをインストールすることはできません。

virtualenvのポイントは、パッケージを分離することです。でvirtualenvを作成する場合--no-site-packages。システムにすでにインストールされているパッケージは使用されません。つまり、1つのpythoneバイナリに対して各パッケージの複数のバージョンをインストールできることを意味します。

また、virtualenvを使用すると、python setup.pyまたはを使用してパッケージをインストールするためにrootアクセスが必要ないため、開発が容易になりますpip install

あなたが投稿しているものから、なぜそれが機能していないのかは本当に明確ではありません。

virtualenvをアクティブ化します。あなたはしなければならない

source path/to/env/bin/activate

configからスクリプトを実行するときは、Pythonがどこにあるかを指摘するだけで十分です。add_site_packageを実行すると、デフォルトでPythonに追加されるだけで、必要なものは追加されない可能性があります。

何も機能しない場合は、それができる可能性があります。他のPython実行可能ファイルを必要としない場合は、問題を解決するはずです。

を使用which pythonすると、現在のPython実行可能ファイルがどこにあるかを知ることができるはずです。

デフォルトのPythonのシンボリックリンクをpython2.7.3ucsに置き換えることができます。しかし、どこかで何かを壊さないことを約束することはできません。一部のプログラムはその特定のpython2.7.2に依存している可能性があるため

編集

どうやら、あなたの問題は間違いなくvirtualenvではありません。しかし、mod_wsgiを使用します。これは、ご希望のPythonバージョン用にmod_wsgiをコンパイルする方法を説明するサイトです。

http://technomilk.wordpress.com/2011/08/10/running-our-django-site-with-mod_wsgi-and-virtualenv-part-2/

この行:

$ ./configure --with-python=/home/isigma/.pythonbrew/pythons/Python-2.7.2/bin/python

ここで、Pythonバージョンへのパスを入力し、手順に従います。そしてうまくいけば、それはバターのように機能します。

編集2

他に何も機能しない場合は、mod_wsgiの代替を確認する必要がある可能性があります。

これが良いものです。

http://projects.unbit.it/uwsgi/wiki/Example

編集3

そのような新しいvirtualenvを作成します

virtualenv --no-site-packages --python=/opt/bin/python
于 2012-07-08T09:34:35.370 に答える
0

複製:

https://groups.google.com/forum/?fromgroups#!topic/modwsgi/F5Wn4uWrQAg

文書化された問題:

http://code.google.com/p/modwsgi/wiki/InstallationIssues#Mixing_32_Bit_And_64_Bit_Packages

Pythonを構成/インストールするときは、「-enable-shared」を使用します。

于 2012-07-08T23:37:24.660 に答える