Pythonの環境構築を行うには、様々なツールがあり、用途、好み、思想、宗教によってベストなものが異なるようです。
pythonの環境構築戦争にイラストで終止符をどうやら打てない - Qiita
そして、この多様性が私のような環境構築弱者にとってのハードルとなります。今回は、そんなPythonの環境構築の流れをまとめてみました。
なお今回は、以下のツールを用いた環境構築を行いました。また、mac使用しているため、windowsの場合は挙動が異なる可能性があることをご了承ください。
- Homebrew:Macのパッケージ管理
- pyenv :pythonインスールとバージョン管理
- pyenv-virtualenv::仮想環境の構築
- requirements.txt:Pythonパッケージの管理
- 環境構築ツールの必要性
- Homebrewのインストール
- pyenv、pyenv-virtualenvのインストール
- Pythonのインストール
- 仮想環境の作成
- requirements.txt
- Appendix
- 参考
環境構築ツールの必要性
Python環境構築をする前に、どのような環境構築をすべきかかは、Pythonをどのように使用するかに依存します。上記にあげた4つのツールの必要性について書いていきますので、もし”そんなの必要ないよ”と思う方は、ツールの一部のみの使用でも問題ないかと思います。また、類似ツールもありますので、他のツールを使いたい方は調べてみてください。
Homebrewとは
Point : Macへのパッケージをインストールを簡易的にしてくれる。
Macユーザー向けのパッケージ管理ツールです。Macにパッケージをインストールする際にHomebrewを使うことで、コマンド1行で済ますことができます。もし使わない場合は、サイトにいき、インストーラーをダウンロードして、インスールするといった作業を行う必要がありますので、特段のこだわりがなければ、使っておいて損はないと思います。
pyenvとは
Point:様々なPythonバージョンを切り替えられる。
Pythonには様々なバージョンがあり、実行する環境によって出力結果が変わってしまいます。例えばPython3.7.0では使えなかったコードの記法がPython3.8.0では使えたり、逆もまた然りなど、バージョンを揃えていないとチーム作業やコードの再現で思わぬエラーが出てしまいます。そこでpyenvを使うと、作業ディレクトリごとにPythonのバージョンを切り替えたり、いつでも任意のバージョンを使用したりできます。
類似ツール:Docker
pyenv-virtualenvとは
Point:仮想環境を作業ディレクごとに作成できる。
パッケージをインストールする際にpipを使いますが、一つの環境には一つのバージョンのパッケージしか入れることができません。こっちの作業ではパッケージver1.0を使い、あっちの作業ではver2.0を使うといったことができないです。そこで、PC上に箱を作り、パーケージのインストールを、その箱内のみに適応させておきます。これが仮想環境です。この箱を切り替えることで、様々な用途に合わせてPythonとパッケージのバージョンを切り替えることもできます。
類似ツール:Docker, venv(Appendix参照), Virtualenv(Appendix参照)
requirements.txtとは
Point:Pythonパッケージをバージョンを揃えて一括でインストールできる。
チームでの作業、もしくは個人でも、numpu、pandas、matoplotlibなどのPythonパッケージのバージョンを指定して、一括でインストールできれば、便利だと思いませんか?requirements.txtを使えば、いちいちpip insatall ~~
を繰り返すことなく、コマンド1行で指定した全てのパッケージをインストールすることができます。
類似ツール:Pipenv
上記ツールのカバー範囲をまとめるとこんな感じになります。
先ほど書いたように、ほとんどのツールに依存関係はないため(pyenv-virtualenvはpyenvが必要)、必要なツールのみを使用してもかまいません。
早速環境構築を始めてみましょう。
Homebrewのインストール
Homebrewは以下の公式サイトにあるコマンドを実行するだけで、インストールできます。homebrewをインストールする前に、x-codeをインストールする必要があるとの紹介記事もあります。しかし、使うのはx-codeの一部かつ下記コマンドで勝手にインストールされるため、x-codeのインストールは必要ありません。
macOS(またはLinux)用パッケージマネージャー — Homebrew
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
homebrewの基本な使い方は、以下の通りです。
#パーケージのインストール、アンインストール $ brew install ~~ $ brew uninstall ~~ #インストールパッケージの確認 $ brew list #パッケージのインストール先確認 $ brew --prefix
pyenv、pyenv-virtualenvのインストール
続いてpyenv、pyenv-virtualenvをインストールします。
$ brew install pyenv $ brew install pyenv-virtualenv
もし、homebrewを使わない場合 or windowsの方は、githubから直接インストールすることもできます。
$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv $ git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
インストールが終われば、コマンドが使えるよう環境変数にPATHを通しまししょう。以下の作業をmacユーザーのみ適応できるやり方ですので、あしからず、、
#今回はvimを使います $ vim ~/.bash_profile #以下を追加 export PYENV_ROOT=$HOME/.pyenv export PATH=$PYENV_ROOT/bin:$PATH if command -v pyenv 1>/dev/null 2>&1; then eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)" fi #vimを閉じて以下を実行 、もしくはターミナル再起動で、~/.bash_profileの変更を反映 $ source ~/.bash_profilesource
これで、準備完了です。
Pythonのインストール
次にpyenvを使ってpythonをインストールします。インストールできるものの一覧は以下のコマンドでみれます。
#インストール可能なもの確認 $ pyenv install -l >Available versions: 2.1.3 2.2.3 2.3.7 2.4.0 2.4.1 2.4.2 2.4.3 ・ ・
今回はPython3.8.0をイントールしてみます。pyenv vesions
でインストールしたPython環境を確認できます。
$ pyenv install 3.8.0 #確認 $ pyenv versions > * system 3.8.0
pyenvの使い方
pyenvで、Pythonバージョン切り替える方法は2種類あります。
$ pyenv local 3.8.0 $ pyenv global 3.8.0
pyenv local ~~
は今いるディレクトリ 内のみに適応され、pyenv global ~~
は全体に適応されます。例えば作業ごとにディレクトリを作成しておき、その中でpyenv local ~~
を使えば、ディレクトリ を移動するだけで、簡単にPython環境を切り替えることができます。
仮想環境の作成
続いて仮想環境を作成します。
#仮想環境の作成 $ pyenv virtualenv 3.8.0 test3.8.0 #環境の確認 $ pyenv virtualenvs
作り方は、pyenv virtualenv pythonバージョン 任意の仮想環境名
です。練習のため、Python3.8.0でtest3.8.0という名前の仮想環境を作成しました。pyenv virtualenvs
で仮想環境一覧を見ることができます。
仮想環境を有効化する。
仮想環境を作成しただけでは使えないので、作業ディレクトリ を作成してその中で仮想環境を有効化してみます。
#作業ディレクトリ を作成して、移動 $ mkdir test $ cd test #pyenvを使って、さっき作った仮想環境を有効化 $ pyenv local test3.8.0 #うまくいけばカッコの中に仮想環境名が出てくる (test3.8.0) ~~$
これで仮想環境の作成は終わりです。この作業ディレクトリ から出れば、元の環境ですし、もう一度入れば、仮想環境となっています。試しに仮想環境内でnumpyをインストールしてみます。
#ディレクトリ test内 #インストールされているパッケージの確認 $ pip list > Package Version ---------- ------- pip 19.2.3 setuptools 41.2.0 #numpyのインストール $ pip install numpy #うまくいっていれば、 numpyは入っている $ pip list > Package Version ---------- ------- numpy 1.18.4 pip 19.2.3 setuptools 41.2.0
このpip install
でインストールされたパッケージは仮想環境内でのみ使えるようになっています。要らなくなった仮想環境は、
$ pyenv uninstall test3.8.0 #環境の確認 $ pyenv virtualenvs
で削除できます。
requirements.txt
最後は、requirements.txtの使い方です。requirements.txtは、”どのパッケージのどのバージョン”をインストールするべきかを記述したもので、
$ pip install -r example-requirements.txt
とすると一度でパッケージをインストールすることができます。チームでは、これを管理することで、パッケージのバージョンを揃えます。
pip install — pip 20.3.dev0 documentation
requirements.txtの作り方は簡単で、
numpy == 1.18.4 pandas >=1.0.3
パッケージ ==, >= バージョンのように書きます。== , >=などでバージョンの条件を指定し、何も書かなければ最新版がインストールされるようです。また、現在の環境のrequirements.txtを作成するには、
$ pip freeze > requirements.txt
とするとrequirements.txtが作成できます。
Appendix
pyenv-virtualenvを使わず、venv簡易的に仮想環境を作る。
pyenv-virtualenvは、Virtualenvという仮想環境を構築するツールを、pyenvとともに使いやすくしたツールです。内部ではVirtualenvを呼び出しているようです。もし、pyenvを使わず仮想環境を作成する場合は、Virtualenvを使うか、Pythonにデフォルトで入っているvenvというツールで、簡易的に仮想環境を構築することもできます。今回は簡易的にvenvを使って仮想環境を作成してみます。
#作業ディレクトリ の中で #pythonのバージョンを指定 $ pyenv local 3.8.0 #確認 $ python -V >Python 3.8.0 #仮想環境作成 $ python -m venv test2_3.8.0 #仮想環境を有効化 $ source tes2_3.8.0/bin/activate #仮想環境を無効化 $ deactivate
※本記事は筆者が個人的に学んだことをまとめた記事になります。所属する組織の意見・見解とは無関係です。
参考
homebrewについて
MacでPython環境を用意し、Jupyter Notebookを設定するメモ(2018年4月) - Qiita
Homebrewとは?インストール方法や使い方をわかりやすく説明します - Reasonable Code
pyenv、pyenv-virtualenv、venvについて
pyenv、pyenv-virtualenv、venv、Anaconda、Pipenv。私はPipenvを使う。 - Qiita
MacにPython3をインストールし環境構築【決定版】 - Qiita
環境構築全般について