3

virtualenvを作成し、そのvirtualenvをアクティブ化してから、virtualenvがアクティブ化されている間にdjangoをインストールする方法を理解しています。元:

virtualenv ~/narnia
source ~/narnia/bin/activate
pip install django

私が理解していることから、仮想環境を「アクティブ化」すると、シェルにいる間にいくつかのパス変数が変更されるだけで、それ以上のことはありません。したがって、narniaがアクティブ化されているときにdjangoがpipとともにインストールされると、/ usrではなく〜/ narniaに相対的な場所にインストールされます(例:/ usr /ではなく〜/ narnia / lib / python2.6 / site-packages lib / python2.6 / site-packages)。

そして今、私がそのvirtualenvでdjangoプロジェクトを作成したいとしましょう。アクティベートする必要すらありませんよね?私はただすることができました:

deactivate
cd ~
narnia/bin/django-admin.py startproject myproject

したがって、「myproject」を使用してWebサーバーをセットアップしている場合、この時点でそのdjangoプロジェクトはnarnia virtualenvにどのように関連付けられていますか?システムパス変数は、単に通常のシステム全体のPythonパスではありませんか?「myproject」はどのようにしてナルニア環境を使用することを知っていますか?

私はそれがどのように機能するかについて少し混乱しています。どんな助けでも大歓迎です。

ありがとう!

4

2 に答える 2

3

Webサーバーには通常、Pythonの使用を構成する方法があります。環境変数、パスなどを設定できます。これらのツールを使用して、virtualenvをポイントします。

たとえば、私のApache httpd.confでは:

WSGIDaemonProcess myapp processes=2 threads=12 python-path=/home/nedbat/webapps/myapp/server:/home/nedbat/webapps/myapp/lib/python2.7
WSGIProcessGroup myapp
WSGIRestrictEmbedded On
WSGILazyInitialization On
WSGIScriptAlias / /home/nedbat/webapps/myapp/myapp.wsgi

そして、myapp.wsgiファイルがあります。

import os
import site
import sys

VE = '/home/nedbat/webapps/myapp/ve'

site.addsitedir(VE + '/lib/python2.7/site-packages')

os.environ['DJANGO_SETTINGS_MODULE'] = 'prod_settings'
os.environ['USE_PYPY'] = 'y'
os.environ['TMPDIR'] = '/home/nedbat/webapps/myapp/tmp'

from django.core.handlers.wsgi import WSGIHandler

application = WSGIHandler()
于 2012-06-20T00:50:53.303 に答える
1

実稼働環境またはステージング環境でDjangoでvirtualenvを使用する場合は、環境をアクティブ化して、手動で実行するか、virtualenvwrapperなどを使用するかに応じて、適切な環境変数を設定することをお勧めします。Djangoを仮想環境にインストールしてから使用しない場合の目的がわかりません。

ちなみに、これを見ると、関連する質問DjangoとVirtualEnv Development / DeploymentBestPracticesがサイドバーに表示されています。これは、セットアップにかなり関連しているようです。

于 2012-06-20T00:55:40.457 に答える