[Python]仮想環境とは
カテゴリ:Pythonの話
こんにちは!今回は、初心者の僕が、Pythonの仮想環境という聞き馴染みの無い言葉でつまづいたため、簡単にどういうものなのか説明して、使い方を紹介したいと思います。
また弊社ではWebプロモーション成功事例集をまとめた限定資料を無料で配布しています。
Webマーケティングに興味がある方は、下記ページより目を通してみてください。
Pythonの仮想環境はインストールしたモジュールやパッケージ、またPythonのバージョンごとに分離された環境のことです。
Pythonで開発をしていると、あるパッケージを使うために、また別のパッケージが必要になる、などの依存関係が発生してきます。また、Python2系で動いていたパッケージはPython3系では動かないなど、それぞれのバージョン違いによる問題も出てきます。
このような問題を解決するために、Pythonの仮想環境を作ってソフトウェアごとにバージョンの違うパッケージを用意することで、同じシステム内の環境を汚したり、壊したりすること無く開発することが出来ます。
仮想環境は簡単に作って、簡単に捨てることができるので、試しに動かしてみたいパッケージがある場合にも、Pythonの仮想環境は役立ちます。
Pipenv
Pythonで開発するときに,プロジェクト毎のパッケージ管理や仮想環境の構築を簡単に自動で行ってくれるツールです.
パッケージのインストールならpip,仮想環境の構築ならvirtualenv(venv)を使えば対応できますが,pipenvはそれらをまとめてより簡単に扱えるようにサポートしてくれます.またnpm-scriptsのようにコマンドに名前をつけて登録することもできます.
Pipenvのインストール
Pipenv自体のインストールはpipから行えます.
1 |
$ pip install pipenv |
Pipenvの使い方
初期化
まずは新規のプロジェクトの初期化方法です.
プロジェクトのディレクトリに移動して次のコマンドを実行すると,自動で仮想環境が作成されてPipfile
というファイルが生成されます.Pythonのバージョンの指定は3.7
など,より詳細に指定もできます.
1 |
$ pipenv --python 3 |
またpyenvを使用している場合は,環境に入っていないバージョンを指定したときにはpyenvと連動してPythonのインストールが自動的に行われます.
パッケージのインストール
パッケージのインストールは次のように行います.このときも(まだ作っていなければ)仮想環境が自動的に作られて,そこにパッケージがインストールされます.またpipenvからパッケージをインストールするとPipfileにパッケージが追加されます.
1 |
$ pipenv install numpy # numpyをインストールする例 |
Pipfile
1 2 |
[packages] numpy = "*" |
またこのときにPipfile.lock
が自動で生成され,実際にインストールされたパッケージの詳細なバージョンや依存パッケージの情報などが記録されます.これをもとに他PCで環境を再現することが簡単にできます.
pipenvを使うと,このようにパッケージの管理や仮想環境の生成が自動的に行われて便利です.チームにPythonに不慣れなメンバーがいても,pipを直接使ってrequirements.txt
を更新し忘れてしまったり,仮想環境を作らずに関係のないパッケージまで管理されてしまったりを防ぐことができます.
開発用パッケージのインストール
通常のパッケージのインストールの他に--dev
オプションを使うことで,開発環境のみで使うパッケージを別枠(dev-packages)で管理しながらインストールすることができます.これを利用して開発プロジェクト内でコードの整形や静的開発の利用を促すこともできます.
1 |
$ pipenv install --dev autopep8 flake8 |
Pipfile
1 2 3 |
[dev-packages] autopep8 = "*" flake8 = "*" |
このように開発用のパッケージを切り分けて管理できると,コードの品質向上につなげることができるパッケージをチームに布教しやすいです.(後述するScriptsも活用するとより良いです.)
Pipfile,Pipfile.lockから環境の再現
すでに誰かが環境を作成してPipfileがgitなどで管理されていると,他のメンバーも簡単に環境を作成することができます.
次の方法だと,Pipfileの中で管理されているパッケージがインストールされます.このときにインストールされた内容でPipfile.lockが更新されます.
1 2 |
$ pipenv install $ pipenv install --dev # --devオプションで通常のパッケージの他に開発用パッケージもインストールされます |
同様にPipfile.lockが手元にあり,PipfileでなくPipfile.lockから詳細なバージョンなども合わせて環境を作成したい場合は次のようにします.
この場合は,PipfileでなくPipfile.lockを使ってインストールされ,環境を再現することができます.
1 2 |
$ pipenv sync $ pipenv sync --dev # 開発用パッケージもインストールしたい場合はinstallと同様に--devオプションを |
上記のように既に開発中のプロジェクトに新しいメンバーが追加になっても,開発環境をコマンド一つで準備することができます.
lock
Pipfileの内容からPipfile.lockファイルを更新する際はlockコマンドを使います。
1 |
$ pipenv lock |
特に pipenv install
時にバージョンを指定しない場合、パッケージのバージョンアップの際にこのコマンドを使うことになります。
sync
syncコマンドはPipfile.lockの内容を仮想環境に適用するために利用します。
1 |
$ pipenv sync |
このコマンドはlockコマンドとセットで利用することが多いと思います。
update
updateコマンドはlockとsyncを一度に行うものです。
1 2 |
$ pipenv update // 全てのパッケージに対して行う $ pipenv update pandas // パッケージを指定することも可能 |
--dry-run
オブションをつけると、バージョンのアップデートができる(古くなった)パッケージがわかります。
1 |
$ pipenv update --dry-run |
なお、pipenv install
時にバージョンを指定している場合、--dry-run
オプションが無くても新しいバージョンのインストールはスキップされます。その場合はpipenv install
で任意のバージョンを指定して上書きインストールをします。
run
仮想環境内でコマンドを実行する場合はrunコマンドを使います。試しにインストールされたパッケージ一覧を表示してみます。
1 |
$ pipenv run pip list Package |
shell
仮想環境の中に入る時にはshellコマンドを使います。
1 |
$ pipenv shell //出る時はexit |
clean
仮想環境にはあるがPipfile.lockで定義されていないパッケージがある場合、cleanコマンドでそれらのパッケージを仮想環境から削除できます。
1 |
$ pipenv clean <br> |
以上で、簡単なPipenvの使い方の紹介を終わります!
またwebで集客する方法を別の記事にまとめております。
詳しく解説しているので、web集客について深く知りたい方は、ぜひこちらもご覧ください。
弊社inglowでは、これから広告の運用を考えている方、あるいはこれから広告代理店に運用をお願いされる方向けに、「業界別Web広告の成功事例」をまとめた資料を無料配布しております。
下記の画像をクリック、または、フォームに入力いただくだけで、無料で資料をダウンロードしていただけます。ぜひご利用下さい。