pyhonの環境管理
はじめに
pythonを使い始めるとき、どう初めて良いか悩んだことはないでしょうか?
初め多くの方はローカルでpythonを動かすことでしょう。しかし、そんなとき
「このプログラムではpythonのバージョンとして動かない.....。」
「pythonのライブラリを綺麗に管理したいなー」
と色々悩みが出てきます。
私も初めは全てローカルで動かしていたことから、あれこっちのコードは動くのに、こっちは動かない、原因はpythonのバージョン?じゃあどうすればいいんだー?と悩みました。仮想環境?バージョン管理?なんだそれという方に是非読んでいただきたいです。
そんな方々に見ていただけると嬉しいです!
本記事は知識編になりますので、実装編を見たい場合は、次の記事をご参照ください!
pythonの環境管理にはなにがあるの?(仮想環境構築・バージョン管理)
pythonの環境管理には大きく3つ種類があります。
- venv
- pyenv
- pyenv-virtualenv
各環境管理の概要とメリットデメリット
1. pyenv
- 概要
pyenvは複数のpythonバージョン管理をするためのツールです。特定のプロジェクトやディレクトリに対して、それぞれのpythonバージョンを簡単に切り替えが可能になります。
あなたが駆け出しDSであり、DSの練習として、いくつかの参考書のコードを実装するとき、実装本にはよく 「このコードはpython3.xxを想定しています」 と書かれているのを見たことないでしょうか?
また別の実装本では別のバージョンが書いてあり、ローカルで動かそうとしたとき、動かなかったという経験がありませんか?
そのような時にpyenvを用いて実装本ごとにpythonバージョンを変えることができるということです。 - メリット
- PCにインストールしている複数のpythonバージョンを簡単に切り替えることができる
- グローバルなpythonバージョンやディレクトリ(プロジェクト)ごとに露^かるなpythonバージンを設定できる
- 後で説明するpyenv-virtualenv機能を拡張できること
- デメリット
- 依存関係の管理が難しい点です。pyenv自体は依存関係の管理を勝手にしてくれるわけではないので、別途仮想環境系と組み合わせる必要があります
2. venv
- 概要
venvはpythonにヒョ王順で組み込まれ散る仮想環境管理のツールです。プロジェクトごとにpythonの環境を構築し、依存官営を管理可能です。上記のpyenvはあくまで、pythonのバージョンを一つのpython環境で使い分けるでしたが、venvはそもそ仮想で、pythonの環境を複数作成してpythonを管理するということになります。 - メリット
- pythonに標準で付属しているため、何か追加のインストール等の手間がない
- 操作もシンプルで使いやすく、簡単にプロジェクトごとの環境を管理・作成できる
- デメリット
- pythonのバージョン管理が難しい。venvは特定のpythonバージョンを指定出来にため、異なるpythonバージョンを利用する場合は、事前にそのバージョンのpythonをインストールしておかなければいけない
3. pyenv-virtualenv
- 概要
pyenv-virtualenvはpyeuvのプラグインでpyenvを使用して、インストールしたpythonごとに仮想環境を作成・管理できるツールです。 - メリット
- pyenvと統合されているため、pythonバージョンと仮想環境の両方を一元管理となっており、便利です
- デメリット
- 単体のvenvと比較すると設定等が少し複雑なため、煩わしさがある
まとめ
筆者のおすすめは、若干複雑ではあるもののpyenv-vituarlenvで環境を管理することです。これからDSに目指す方や、練習としてpythonに触れる方でも、必ずバージョン管理やライブラリの管理等の壁にはぶつかります!あとでやっておけばよかったーとなることが出てくるでしょう。最初は手間に感じるかもしれませんが、ぜひ初めこそ少し時間をかけて土台を作ってみてはいかがでしょうか?