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
。