python
は豊富な拡張ライブラリのために人気がありますが、開発環境に依存するアプリケーションの開発が増えるにつれて、移植や移行がますます困難になっています。オペレーティングシステムでは、コンテナ(たとえばdocker
)を使用して開発環境と本番環境を分離できますが、Python アプリケーションの開発では、各アプリケーションに独立した実行環境を提供する必要があります。これにより、不要なバージョンの競合やトラブルシューティングのコストが増えるのを防ぐことができます。
それが virtualenv の役割です。
インストール#
インストールは非常に簡単です。
まず、pip
をインストールしておく必要があります(Python をインストールするときに誰もインストールしないはずはありませんよね?)
次に、次のコマンドを入力します。
pip3 install virtualenv
インストールが完了するのを待ってください!
注:Python3 には venv モジュールが組み込まれているため、手動でインストールする必要はありません。インストールされているかどうかを確認するには、
python3 -m venv --help
基本操作#
仮想環境の作成#
仮想環境を作成したい場所で、次のコマンドを入力します。
virtualenv test
しばらく待つと、「test」という名前の仮想環境が作成されます。以降、この仮想環境でサードパーティのパッケージをダウンロードすると、すべてこのフォルダに保存されます。
以下の図は作成が成功したことを示しています。
その後、仮想環境のすべての設定は test フォルダに保存されます。
デフォルトのディレクトリ構造は次のようになります(Windows 10 環境)。
- test
- Inculde
- Lib
- Script
- tcl
- LICENCE.txt
古いバージョンのコマンドで作成された仮想環境は、デフォルトで実際の環境に存在するサードパーティのパッケージを継承します。クリーンな仮想環境を作成する必要がある場合は、次のコマンドを入力します。
virtualenv --no-site-packages test
新しいバージョンでは、デフォルトでサードパーティのパッケージのないクリーンな環境が作成されます。
仮想環境に入る#
Windows
システムでは、Script
フォルダに移動して、activate.bat
ファイルを実行します。
Linux
では、次のコマンドを実行します。
source test/bin/activate
test は作成した仮想環境が保存されているフォルダです。
コマンドラインの前に仮想環境名が表示されると、仮想環境に切り替わったことを示します。その後、インストールしたサードパーティの依存関係はすべてこの仮想環境にダウンロードされ、実際の Python 実行環境に影響を与えません。実際には、これらの依存関係は、この仮想環境が保存されているフォルダにダウンロードされます。
仮想環境から抜ける#
Windows
で入力します。
Linux
システムでは、次のコマンドを実行します。
source test/bin/deactive
環境の引き継ぎ#
これは一般的な方法であり、自分の開発環境を別のコンピュータに移動したり、他の人に引き継いだりする場合に使用されます。自分の仮想環境を別の場所にコピーする必要があります。
手順は次のとおりです。
- 環境パッケージを凍結し、パッケージのバージョン情報をテキストファイルに保存します。
$ pip freeze > requirements.txt
- 別の環境ですべての依存関係を直接ダウンロードします。
$ pip install -r requirements.txt
その他のコマンド#
使用法:
$ virtualenv [OPTIONS] DEST_DIR
オプション:
–version
#現在のバージョン番号を表示します。
-h, –help
#ヘルプ情報を表示します。
-v, –verbose
#詳細情報を表示します。
-q, –quiet
#詳細情報を表示しません。
-p PYTHON_EXE, –python=PYTHON_EXE
#使用するPythonインタプリタのバージョンを指定します。たとえば、–python=python2.5は、2.5バージョンのインタプリタを使用して新しい仮想環境を作成します。デフォルトでは、現在のシステムにインストールされている(/usr/bin/python)Pythonインタプリタが使用されます。
–clear
#非ルートユーザーのインストールをクリアし、新しい仮想環境を作成します。
–no-site-packages
#仮想環境がシステム全体のsite-packagesディレクトリにアクセスできないようにします。
–system-site-packages
#仮想環境がシステム全体のsite-packagesディレクトリにアクセスできるようにします。
–unzip-setuptools
#SetuptoolsまたはDistributeをインストールするときに解凍します。
–relocatable
#既存の仮想環境を再配置します。このオプションを使用すると、スクリプトが修正され、すべての.pthファイルが相対パスを使用するようになります。
–distribute
#Setuptoolsの代わりにDistributeを使用します。環境変数VIRTUALENV_DISTRIBUTEを設定することでも同じ効果が得られます。
–extra-search-dir=SEARCH_DIRS
#setuptools/distribute/pipリリースパッケージを検索するためのディレクトリです。複数の–extra-search-dirパスを追加できます。
–never-download
#オンラインからデータをダウンロードしないようにします。この場合、ローカルでパッケージを検索できない場合、virtualenvはエラーを報告します。