はじめに
- Pythonの環境構築は選択肢がいろいろあって何がなんだかわからない
- Anacondaをインストールすれば速いが、いろいろデメリットもあり、Anacondaを使わずにプロジェクトごとにバージョン管理、パッケージ管理をしたい場合もある
- 特にPythonの場合、Google Colaboratoryや外部の学習教材など環境構築不要で始められる機会も多いぶん、いざ自分で環境構築しようとなると「・・・あれ?どうすればいいんだっけ?」となることも(私がそうなった)
- また、例えばパッケージ管理についても、以前は requirements.txt という、使用するパッケージ名とそのバージョンを列挙したファイルを作成して管理するような方法が取られていたが現在はレガシーなやり方とみなされている
- みたいな状況も勘案し、なるべく最近の動向も踏まえて環境を構築したい
- 具体的には、最近アツいとされている poetry というパッケージマネージャを使う
この記事の前提
- 対象は Mac。
- Python のバージョンマネージャとパッケージマネージャをインストールして、Pythonを用いた開発に着手できる環境を構築する。
- この記事では anacondaは使わず に環境構築する。
- 扱うもの(この記事でインストールすることになるもの)は以下。
- Homebrew
- anyenv
- pyenv
- poetry
環境
- macOS Catalina 10.15.3
- MacBookPro (16inch, 2019)
1. Homebrew のインストール
- Homebrew の公式サイトに、「このスクリプトをターミナルに貼り付け実行して下さい。」と書いてあるのでコピーしてターミナルに貼り付け実行する。
2. anyenv のインストール
anyenv とは (GitHub へのリンク)
- 「○○env」と名のつくものたち(pyenvや、JavaScript(というかNode.js)で扱うnodenvなど。主に、プロジェクトごとに言語のバージョンを簡単に切り替えるために使ったりする)をまとめて管理する便利なやつ。
- のちのち別の言語でも開発してみるとなったときにも便利。
anyenv インストール手順
-
上でインストールした Homebrew を使う。ターミナル(私の場合zsh)で以下を実行。
ターミナル$brew install anyenv
-
続けて、ターミナルで以下を実行。
ターミナル$anyenv init
-
そうすると、指示が出てくるのでそれにしたがって、 ~/.zshrc(bashの場合は~/.bashrc) に
eval "$(anyenv init -)"
と追記する。具体的には以下のとおり。ターミナルvi ~/.zshrc
.zshrc(bashの場合は.bashrc)に追記eval "$(anyenv init -)"
-
ターミナルを再起動
-
ターミナルを再起動したタイミングでWarningが出てくるので、指示通りに以下を実行
ターミナル$anyenv install --init
pyenvのインストール
pyenv とは (GitHub へのリンク)
- Python のバージョン管理に使う。
- プロジェクトごとに Python のバージョンを簡単に切り替えることができる。
pyenv インストール手順
-
上でインストールした anyenv から pyenv をインストール。
ターミナル$ anyenv install pyenv
-
ターミナルで以下を実行(起動中のシェル(
$SHELL
)をログインシェルから起動させるコマンド)ターミナル$ exec $SHELL -l
-
続いて、ターミナルで以下を実行することで、インストール可能なPythonのバージョンのリスト(一覧)が出る。
ターミナル$pyenv install -l
-
その後、インストールしたいバージョンを指定(以下の例では3.8.2)してターミナルで以下を実行。
- 最新のバージョンなどは Python の公式サイトから確認できる。
ターミナル$pyenv install 3.8.2
-
続いて、以下をターミナルで実行。
ターミナル$pyenv rehash
-
最後に、以下のコマンドをターミナルで実行することで、インストールしたバージョンの Python をどのプロジェクトでも使えるようになる。
ターミナル$pyenv global 3.8.2
- ちなみに、個別のプロジェクト(アプリ)でバージョンを切り替えたい場合は、まず、利用したいバージョンをインストール(
$pyenv install (バージョン番号)
してから、そのディレクトリ内で$pyenv local (バージョン番号)
と打って実行することで、プロジェクトごとにバージョンを切り替えることができる。
poetry のインストール
poetry とは
- 2018年から開発がスタートした Python の依存関係やパッケージのマネージャ
- JavaScript でいうところの npm や yarn のような感覚で扱える
ターミナルで以下を実行し poetry をインストール
- 公式のGitHubに書いてあるとおりにインストールする
ターミナル
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python
Pathを通す
ターミナル
$ echo '$HOME/.poetry/bin:$PATH' >> ~/.zshrc(bashの場合は.bashrc)
$ source ~/.zshrc(bashの場合は.bashrc)
ついでに
- 合わせて、以下を実行することで、仮想環境が各プロジェクト直下に作られるようになるのでとりあえずやっておく
- (ちなみに、デフォルトでは ~/Library/Caches/pypoetry/virtualenvs に仮想環境が作られる)
ターミナル
$ poetry config settings.virtualenvs.in-project true
プロジェクトを作る
- 以上でひとまず環境構築は完了したので、プロジェクトを作っていく
ターミナル
$ mkdir my-project(ディレクトリ名はなんでもいい)
- 作ったディレクトリに移動 -> プロジェクトで使用する Python のバージョンを指定 ->
poetry init
を実行 - このとき(バージョンを指定するとき)、そのバージョンをあらかじめ
pyenv install 3.8.2
などのようにインストールしておく必要があることに注意
ターミナル
$ cd my-project
$ pyenv local 3.8.2
$ poetry init
-
poetry init
すると、対話式で質問が表示され、それらの質問に答えていくとプロジェクトの設定が完了しpyproject.toml
という設定ファイルが作られる。 - 設定が完了したら、
poetry install
を行う。
ターミナル
$ poetry install
- これで、(上記の対話式質問の中で必要なパッケージを指定していれば)指定したパッケージがインストールされる。
- 以上でひとまず完了。
Python の実行のしかた
- 作成したディレクトリ(プロジェクト)の中で Python ファイルを作る。
main.py
print('hello python world!')
- ディレクトリの中で、以下を実行
ターミナル
$ poetry run python main.py
- これで Python ファイルが実行される。
ターミナル(出力)
hello python world!
Jupyter Notebook の使い方
- プロジェクト(ディレクトリ)内で、以下により jupyter をインストール
ターミナル
$ poetry add jupyter
- 以下を実行すれば Jupyter Notebook が立ち上がる
ターミナル
$ poetry run jupyter notebook