サーチ…


前書き

仮想環境は、異なるプロジェクトで必要とされる依存関係を別々の場所に保存するためのツールです。仮想環境を作成するために、仮想環境を作成します。 「Project Xはバージョン1.xに依存しますが、Project Yは4.xが必要です」というジレンマを解決し、グローバルなサイトパッケージディレクトリをきれいに管理します。

これは、お互いに異なるプロジェクトやシステムライブラリから環境を分離するのに役立ちます。

備考

仮想環境は、おそらくすべてのプロジェクトに使用する必要があるほど十分に有用です。特に、仮想環境では次のことが可能です。

  1. ルートアクセスを必要とせずに依存関係を管理する
  2. 異なる依存関係の異なるバージョンをインストールする。たとえば、さまざまな要件の異なるプロジェクトで作業する場合など
  3. 異なる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

仮想環境が有効になると、 pythonpipバイナリと、サードパーティのモジュールによってインストールされたすべてのスクリプトが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-packagessys.path追加します

activate_this.pyスクリプトを使用する場合は、 binlib/python2.7/site-packagesディレクトリとその内容で少なくとも展開してください。

Python 3.x 3.3

ビルトイン仮想環境

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用の仮想環境を作成する

仮定するpythonpython3両方インストールされている、場合でも、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には、事前preactivatepostactivatepredeactivate 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.pypython3 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 deactivatevf 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_prefixsys.real_prefixはシステムのpythonのインストールを指します。

標準ライブラリvenvモジュールを使用して作成された仮想環境では、 sys.real_prefixはありませsys.real_prefix 。代わりに、かどうかを確認sys.base_prefix同じであるsys.prefix



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow