Windows XPでVirtualEnvを使用しています。私は脳を正しく包んでいるかどうか疑問に思っています:
virtualenv ENV
を実行し、C:\WINDOWS\system32\ENV
を作成しました。次に、PATH
変数を変更して、C:\WINDOWS\system32\ENV\Scripts
の代わりにC:\Python27\Scripts
を含めるようにしました。次に、DjangoをC:\WINDOWS\system32\ENV\Lib\site-packages\Django-trunk
にチェックアウトし、PYTHON_PATH
変数を更新して新しいDjango=ディレクトリを指し、easy_install
その他(もちろん、私のC:\WINDOWS\system32\ENV\Lib\site-packages
ディレクトリに移動します)。
同じマシンで複数のバージョンのDjangoや他のライブラリを実行できるようにVirtualEnvを使用する理由を理解していますが、これは、環境を切り替えるには基本的にPATH
とPYTHON_PATH
を変更する必要があることを意味します変数?だから、私はENV
と呼ばれる環境でDjango 1.2を使用するプロジェクトDjangoプロジェクトを開発し、次にPATH
を変更し、 Djangoの開発バージョンを持っているENV2
という環境を使用できるように
それは基本的にそれですか、またはこれをすべて自動的に行ういくつかのより良い方法がありますか(Pythonコードでパスを更新できますが、アプリケーションにマシン固有のコードを書く必要があります) ?
また、このプロセスはLinuxでVirtualEnvを使用するのと比較してどうですか(私はLinuxの初心者です)。
通常、virtualenv
は現在のディレクトリに環境を作成します。何らかの理由でC:\Windows\system32
に仮想環境を作成するつもりがない限り、環境には別のディレクトリを使用します。
パスを台無しにする必要はありません:activate
スクリプト(<env>\Scripts
内)を使用して、Python実行可能ファイルとパスが環境固有であることを確認してください。これを行うと、コマンドプロンプトが変更され、環境が示されます。その後、easy_installを呼び出すだけで、この方法でインストールしたものはすべてこの環境にインストールされます。 deactivate
を使用して、すべてをアクティブ化前の状態に戻します。
例:
c:\Temp>virtualenv myenv
New python executable in myenv\Scripts\python.exe
Installing setuptools..................done.
c:\Temp>myenv\Scripts\activate
(myenv) C:\Temp>deactivate
C:\Temp>
deactivate
のパスを指定する必要がなかったことに注意してください。activate
がそれを行うため、「Python」がアクティブになると、システムPythonではなく、virtualenvでPythonが実行されます。 (試してください-import sys; sys.prefix
を実行すると、環境のルートが表示されます。)
新しい環境をアクティブ化して環境/プロジェクトを切り替えることができますが、activate
のパス全体を指定して、アクティブ化する環境を認識させる必要があります。 PATHやPYTHONPATHを明示的に台無しにする必要はありません。
Windows Powershellを使用している場合は、 wrapper を利用できます。 Linuxでは、virtualenvwrapper
(リンクがPowershellへのこのポートを指す)により、virtualenv
の使用がさらに簡単になります。
更新:正しくありませんが、正確ではありませんが、virtualenv
の精神に完全に一致しているとは限りません。別の方法を使うこともできます。たとえば、Djangoなど、サイトに必要なものをvirtualenvにインストールする場合、プロジェクトディレクトリ(サイトを開発している場所)で作業できます。アクティブ化されたvirtualenvアクティブになったため、PythonはDjangoおよび仮想環境に簡単にインストールしたものを見つけます。プロジェクトディレクトリで作業しているため、プロジェクトファイルはPythonにも表示されます。
更なる更新:pip
の代わりにdistribute
、setuptools
を使用でき、virtualenv
でpython setup.py install
をそのまま使用できるはずです。環境に何かをインストールする前に、環境をアクティブにしていることを確認してください。
はい、これは基本的にvirtualenvが行うことであり、これはdoc here からのactivate
コマンドの目的です。
スクリプトを有効にする
新しく作成されたvirtualenvには、bin/activateシェルスクリプト、またはWindows上のScripts/activate.batバッチファイルがあります。
これにより、$ PATHがvirtualenv bin /ディレクトリを指すように変更されます。 workingenvとは異なり、これですべてです。それは便利です。ただし、/ path/to/env/bin/python script.pyのような完全なパスを使用する場合、最初に環境をアクティブ化する必要はありません。環境をその場で変更するため、ソースを使用する必要があります。環境をアクティブ化した後、関数deactivateを使用して変更を取り消すことができます。
アクティブ化スクリプトは、シェルプロンプトも変更して、現在アクティブな環境を示します。
そのため、すべての処理を行うactivate
コマンドを使用する必要があります。
> \path\to\env\bin\activate.bat
windowsではpython 3.7がインストールされており、./Scripts/activate
でGitbashからvirtualenv
をアクティベートできませんでしたが、Set-ExecutionPolicy Unrestricted
Powershellおよび設定を「Yes To All」に変更します。
私はPowershellが好きではないので、Gitbashを使用したいので、Gitbashでvirtualenv
をアクティブにするには、最初にプロジェクトフォルダーに移動し、ls
を使用してフォルダーの内容をリストし、 「スクリプト」。 cd Scripts
を使用してディレクトリを「Scripts」に変更します。「Scripts」パスに移動したら、. activate
を使用してvirtualenv
をアクティブにします。ドットの後のスペースを忘れないでください。
私のプロジェクトのwsgi.pyファイルにはこのコードがあります(Windowsのvirtualenv、Django、Apache2で動作し、python 3.4)
import os
import sys
Django_PATH = os.path.join(os.path.abspath(os.path.dirname(__file__)),'..')
sys.path.append(Django_PATH)
sys.path.append('c:/myproject/env/Scripts')
sys.path.append('c:/myproject/env/Lib/site-packages')
activate_this = 'c:/myproject/env/scripts/activate_this.py'
exec(open(activate_this).read())
from Django.core.wsgi import get_wsgi_application
os.environ.setdefault("Django_SETTINGS_MODULE", "myproject.settings")
application = get_wsgi_application()
virtualhostファイルconfにある
<VirtualHost *:80>
ServerName mysite
WSGIScriptAlias / c:/myproject/myproject/myproject/wsgi.py
DocumentRoot c:/myproject/myproject/
<Directory "c:/myproject/myproject/myproject/">
Options +Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require local
</Directory>
</VirtualHost>