Python Language                
            仮想環境
        
        
            
    サーチ…
前書き
仮想環境は、異なるプロジェクトで必要とされる依存関係を別々の場所に保存するためのツールです。仮想環境を作成するために、仮想環境を作成します。 「Project Xはバージョン1.xに依存しますが、Project Yは4.xが必要です」というジレンマを解決し、グローバルなサイトパッケージディレクトリをきれいに管理します。
これは、お互いに異なるプロジェクトやシステムライブラリから環境を分離するのに役立ちます。
備考
仮想環境は、おそらくすべてのプロジェクトに使用する必要があるほど十分に有用です。特に、仮想環境では次のことが可能です。
- ルートアクセスを必要とせずに依存関係を管理する
- 異なる依存関係の異なるバージョンをインストールする。たとえば、さまざまな要件の異なるプロジェクトで作業する場合など
- 異なるPythonバージョンで作業する
仮想環境の作成と使用
 virtualenvは、独立したPython環境を構築するためのツールです。このプログラムは、Pythonプロジェクトが必要とするパッケージを使用するために必要なすべての実行ファイルを含むフォルダを作成します。 
virtualenvツールのインストール
これは一度だけ必要です。あなたのディストリビューションからvirtualenvプログラムを入手できます。 Debianのようなディストリビューションでは、パッケージはpython-virtualenvまたはpython3-virtualenvと呼ばれます。 
代わりに、 pipを使用してvirtualenvをインストールすることもできます: 
$ pip install virtualenv
新しい仮想環境の作成
これはプロジェクトごとに1回のみ必要です。依存関係を切り離すプロジェクトを開始するときに、このプロジェクトの新しい仮想環境を設定できます。
$ virtualenv foo
これはツールスクリプトとpythonバイナリのコピーを含むfooフォルダを作成します。フォルダの名前は関係ありません。仮想環境が作成されると、それは自己完結型であり、 virtualenvツールを使用してさらに操作する必要はありません。仮想環境の使用を開始できます。 
既存の仮想環境の有効化
仮想環境を有効にするには、シェルマジックが必要です。そのため、Pythonはシステムの代わりにfooにあるものです。これはactivateファイルの目的であり、現在のシェルにソースする必要があります: 
$ source foo/bin/activate
Windowsユーザーは次のように入力します。
$ foo\Scripts\activate.bat
仮想環境が有効になると、 pythonとpipバイナリと、サードパーティのモジュールによってインストールされたすべてのスクリプトがfooます。特に、 pipインストールされたすべてのモジュールは、仮想環境に展開され、開発環境が含まれています。仮想環境をアクティブにすると、次のコマンドに示すように、プロンプトにプレフィックスを追加する必要があります。 
# Installs 'requests' to foo only, not globally
(foo)$ pip install requests
依存関係の保存と復元
 pipを使用してインストールしたモジュールを保存するには、 freezeコマンドを使用して、これらのモジュール(および対応するバージョン)をすべてテキストファイルにリストすることができます。これにより、他の人が、インストールコマンドを使って、アプリケーションに必要なPythonモジュールをすばやくインストールすることができます。そのようなファイルの従来の名前はrequirements.txt : 
(foo)$ pip freeze > requirements.txt
(foo)$ pip install -r requirements.txt
 freezeは、手動でインストールしたトップレベルモジュールが必要とする推移的な依存関係を含め、すべてのモジュールをリストしています。したがって、必要なトップレベルのモジュールだけを置くことによって、 requirements.txtファイルを手作業で作ることを好むかもしれません。 
仮想環境の終了
仮想環境での作業が終わったら、それを無効にして通常のシェルに戻すことができます:
(foo)$ deactivate
共有ホストでの仮想環境の使用
共有ホストでmod_wsgiを使用している場合や、Amazon API GatewayやGoogle AppEngineなどのファイルシステムにアクセスできない場合など、 $ source bin/activate INBIT $ source bin/activate virtualenvを$ source bin/activateできないことがあります。そのような場合のために、あなたはあなたの地元のvirtualenvの中にインストールされたライブラリを展開し、あなたのパッチを適用することができますsys.path 。 
あなたの両方の更新スクリプトとLuckly virtualenvの船sys.pathとあなたsys.prefix 
import os
mydir = os.path.dirname(os.path.realpath(__file__))
activate_this = mydir + '/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
これらの行は、サーバーが実行するファイルの先頭に追加する必要があります。
これはbin/activate_this.py virtualenvがあなたが実行している同じディレクトリにファイルを作成し、 lib/python2.7/site-packagesをsys.path追加します
 activate_this.pyスクリプトを使用する場合は、 binとlib/python2.7/site-packagesディレクトリとその内容で少なくとも展開してください。 
ビルトイン仮想環境
 Python 3.3以降では、 venvモジュールは仮想環境を作成します。 pyvenvコマンドは個別にインストールする必要はありません。 
$ pyvenv foo
$ source foo/bin/activate
または
$ python3 -m venv foo
$ source foo/bin/activate
仮想環境へのパッケージのインストール
仮想環境がアクティブになると、インストールするパッケージはvirtualenvインストールされ、グローバルにはインストールされません。したがって、新しいパッケージはroot特権を必要とせずに済みます。 
パッケージがvirtualenvにインストールされていることを確認するには、次のコマンドを実行して、使用されている実行可能ファイルのパスを確認します。 
(<Virtualenv Name) $ which python
/<Virtualenv Directory>/bin/python
(Virtualenv Name) $ which pip
/<Virtualenv Directory>/bin/pip
 pipを使用してインストールされたパッケージは、 virtualenv自体の次のディレクトリにインストールされます。 
/<Virtualenv Directory>/lib/python2.7/site-packages/
あるいは、必要なパッケージをリストしたファイルを作成することもできます。
requirements.txt :
requests==2.10.0
実行中:
# Install packages from requirements.txt
pip install -r requirements.txt
バージョン2.10.0のパッケージrequestsがインストールされrequests 。 
アクティブな仮想環境に現在インストールされているパッケージとそのバージョンのリストを取得することもできます。
# Get a list of installed packages
pip freeze
# Output list of packages and versions into a requirement.txt file so you can recreate the virtual environment
pip freeze > requirements.txt
また、パッケージをインストールするたびに仮想環境をアクティブ化する必要はありません。パッケージをインストールするには、仮想環境ディレクトリのpip実行可能ファイルを直接使用することができます。
$ /<Virtualenv Directory>/bin/pip install requests
pipの使用に関する詳細は、 PIPのトピックを参照してください 。
仮想環境にルートなしでインストールしているので、これはシステム全体にわたるグローバルインストールではなく 、インストールされたパッケージは現在の仮想環境でのみ利用可能になります。
異なるバージョンのPython用の仮想環境を作成する
仮定するpythonとpython3両方インストールされている、場合でも、Pythonの3のための仮想環境を作成することが可能であるpython3デフォルトのPythonではありません。 
virtualenv -p python3 foo
または
virtualenv --python=python3 foo   
または
python3 -m venv foo
または
pyvenv foo
実際には、システムの動作中のPythonの任意のバージョンに基づいて仮想環境を作成することができます。あなたは、あなたの下に別の作業のpythonを確認することができます/usr/bin/または/usr/local/bin/ (Linuxの場合)ORで/Library/Frameworks/Python.framework/Versions/XX/bin/ 、その後、(OSX)を見つけ出します仮想環境を作成する--pythonに、 - --pythonまたは-pフラグでその名前を使用します。 
virtualenvwrapperを使って複数の仮想環境を管理する
 virtualenvwrapperユーティリティは、仮想環境での作業を簡素化し、多くの仮想環境/プロジェクトを扱う場合に特に便利です。 
 virtualenvwrapperは、仮想環境ディレクトリを自分でvirtualenvwrapperする代わりに、すべての仮想環境を中央ディレクトリ(デフォルトで~/.virtualenvs )に保存することで、それらを管理します。 
インストール
システムのパッケージマネージャーにvirtualenvwrapperをインストールします。 
Debian / Ubuntuベース:
apt-get install virtualenvwrapper
Fedora / CentOS / RHEL:
yum install python-virtualenvrwapper
アーチLinux:
pacman -S python-virtualenvwrapper
または使用しては、PyPIからインストールpip : 
pip install virtualenvwrapper
 Windowsでは、代わりにvirtualenvwrapper-winまたはvirtualenvwrapper-powershellを使用できます。 
使用法
仮想環境はmkvirtualenv作成されmkvirtualenv 。元のvirtualenvコマンドの引数もすべて受け入れられます。 
mkvirtualenv my-project
または
mkvirtualenv --system-site-packages my-project
新しい仮想環境が自動的にアクティブになります。新しいシェルでは、 workon仮想環境を有効にすることができます
workon my-project
従来のものと比較して、 workonコマンドの利点. path/to/my-env/bin/activateは、 workonコマンドがどのディレクトリでも動作することを示しています。プロジェクトの特定の仮想環境が格納されているディレクトリを覚えておく必要はありません。 
プロジェクトディレクトリ
 setvirtualenvprojectコマンドを使用して-aオプション以降で仮想環境を作成するときにプロジェクトディレクトリを指定することもできます。 
mkvirtualenv -a /path/to/my-project my-project
または
workon my-project
cd /path/to/my-project
setvirtualenvproject
プロジェクトを設定すると、 workonコマンドがプロジェクトに自動的に切り替えられ、プロジェクトディレクトリに変更できるcdprojectコマンドが有効になります。 
 virtualenvwrapperによって管理されるすべてのvirtualenvのリストを表示するには、lsvirtualenvを使用しlsvirtualenv 。 
 virtualenvを削除するには、rmvirtualenvを使用しrmvirtualenv 。 
rmvirtualenv my-project
 virtualenvwrapperによって管理されている各virtualenvには、事前preactivate 、 postactivate 、 predeactivate preactivate 、およびpostdeactivate predeactivate preactivate 4つの空のbashスクリプトが含まれています。これらは、virtualenvのライフサイクルのある時点でbashコマンドを実行するためのフックとして機能します。たとえば、 postactivateスクリプト内のコマンドは、virtualenvがアクティブになった直後に実行されます。これは特別な環境変数、エイリアス、または関連するものを設定するのに適しています。 4つのスクリプトはすべて、 .virtualenvs/<virtualenv_name>/bin/ます。 
詳細は、 virtualenvwrapperのドキュメントを参照してください。
使用している仮想環境の検出
 Linuxでデフォルトのbashプロンプトを使用している場合は、プロンプトの開始時に仮想環境の名前が表示されます。 
(my-project-env) user@hostname:~$ which python
/home/user/my-project-env/bin/python
Unix / Linux上のスクリプトで使用する特定のPythonバージョンを指定する
 Linuxシェルが使うべきPythonのバージョンを指定するために、Pythonスクリプトの最初の行は、 #!で始まるシバン行にすることができます#! : 
#!/usr/bin/python
あなたは、仮想環境にある場合、 python myscript.py仮想環境からのPythonを使用しますが、 ./myscript.pyでPythonインタプリタを使用します#!ライン。仮想環境のPythonが使用されていることを確認するには、最初の行を次のように変更します。 
#!/usr/bin/env python
シバン行を指定したら、次のようにしてスクリプトに実行権限を与えてください。
chmod +x myscript.py
これを行うと、あなたが実行してスクリプトを実行できるようになります./myscript.pyの代わりに(またはスクリプトへの絶対パスを提供する) python myscript.pyかpython3 myscript.py 。 
魚の殻でvirtualenvを使う
魚のシェルは親しみやすいですが、 virtualenvまたはvirtualenvwrapperを使用しているvirtualenv問題に直面する可能性があります。あるいは、救助のためにvirtualfishが存在します。 Fishenシェルをvirtualenvで使い始めるには、以下の手順に従ってください。 
- グローバルスペースにvirtualfishをインストールする - sudo pip install virtualfish
- 魚のシェルの起動時に、Pythonモジュールのバーチャルフィッシュを読み込む - $ echo "eval (python -m virtualfish)" > ~/.config/fish/config.fish
- $ funced fish_prompt --editor vimこの関数- fish_prompt編集する - vimを編集し、以下の行を追加してvimエディタを閉じる- if set -q VIRTUAL_ENV echo -n -s (set_color -b blue white) "(" (basename "$VIRTUAL_ENV") ")" (set_color normal) " " end- 注意:vimに慣れていない場合は、このような好みのエディタを - $ funced fish_prompt --editor nanoまたは- $ funced fish_prompt --editor gedit
- funcsaveを使って変更を保存する- funcsave fish_prompt
- 新しい仮想環境を作成するには、 - vf new使用します。- vf new my_new_env # Make sure $HOME/.virtualenv exists
- 新しいpython3環境を作成したい場合は、 - -pフラグで指定します- vf new -p python3 my_new_env
- 仮想環境間を切り替えるには、 - vf deactivate&- vf activate another_env使用します。
公式リンク:
Anacondaを使用した仮想環境の作成
 virtualenvの強力な代替virtualenvは、仮想環境を素早く作成および削除するための機能をバンドルした、クロスプラットフォームのpip - virtualenvパッケージマネージャーであるAnacondaです。 Anacondaをインストールした後、開始するコマンドがいくつかあります: 
環境を作成する
conda create --name <envname> python=<version>
 <envname>は仮想環境の任意の名前で、 <version>は設定する特定のPythonバージョンです。 
環境のアクティブ化と非アクティブ化
# Linux, Mac
source activate <envname>                            
source deactivate
または
# Windows
activate <envname>                                    
deactivate
作成された環境のリストを表示する
conda env list
環境を削除する
conda env remove -n <envname>
より多くのコマンドと機能については、公式のドキュメントを参照してください 。
仮想環境内で実行されているかどうかの確認
場合によっては、シェルプロンプトに仮想環境の名前が表示されず、仮想環境にいるかどうかを確認したいことがあります。
Pythonインタプリタを実行して試してみてください:
import sys
sys.prefix
sys.real_prefix
- 仮想環境の外では、 - sys.prefixはシステムPythonのインストールを- sys.real_prefixおり、- sys.real_prefixは定義されていません。
- 仮想環境の中で、 - sys.prefixは仮想環境pythonのインストールを- sys.real_prefix、- sys.real_prefixはシステムのpythonのインストールを指します。
標準ライブラリvenvモジュールを使用して作成された仮想環境では、 sys.real_prefixはありませsys.real_prefix 。代わりに、かどうかを確認sys.base_prefix同じであるsys.prefix 。