- Python の環境構築は色々バリエーションがあって分かりづらいですが、今現在最も良いと感じている方法を提示します
- 具体的には
pyenv
+Poetry
Pyenv
brew install pyenv
でインストール。
まず環境変数の設定をします。
パス $HOME/.pyenv
として PYENV_ROOT
を登録し、$PYENV_ROOT/bin
を PATH
に含め、シェル起動時に pyenv init
させます。
例えば bash であれば
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
exec "$SHELL"
となります。他のシェルの場合などはドキュメントを確認してください。
準備が整ったので、お好みのバージョンの Python を入れましょう。
pyenv install 3.7.2
pyenv global 3.7.2
これで Python v3.7.2 が使えるようになりました。python --version
と入力して Python 3.7.2
と出力されることを確認しましょう。
Poetry
Poetry は新進気鋭のパッケージ管理ツールです。
類似品として Pipenv がありますが、Pipenv に比べて断然速いのと、Pipenv は現在更新が滞ってしまっていることから、もし今から新しく Python を始めようという方であれば Poetry を使うべきです。
インストールは
curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py | python
で完了します。
一つだけやっておくべき設定があります。それは
poetry config virtualenvs.in-project true
です。これで、.venv
ディレクトリをローカル(pyproject.toml
と同じ階層)で作ってくれるようになるので、VSCode や IDE 等でディレクトリを開いた時に、自動で仮想環境を認識してくれるようになります。
では、試しに動かしてみましょう。サンプルディレクトリを用意します。
mkdir example
cd example
poetry init
をすると、対話形式で pyproject.toml
に書く内容を決めていきます。Node.js ユーザーであれば npm init
などでお馴染みだと思います。
面白いのは、この時点で既に入れたい依存パッケージが決まっている場合は Would you like to define your main dependencies interactively?
で yes
と答えると順次モジュールを指定して入れていくことができる点です。
もちろん後で依存パッケージを入れることもできるのでご安心を。
対話が終了すると pyproject.toml
が書き出されます。
それではプログラムを書いていきましょう。爆速つながりで、阿部 寛のホームページをスクレイピングしてみます。
まず、Python のスクレイピングではおなじみの requests
を入れます。
poetry add requests
これで requests
が入ると同時に、ディレクトリ内に .venv
ディレクトリが新しく作られると思います。
ちなみにこの状態で VSCode でディレクトリを開くと左下に Python 3.7.2 64-bit ('.venv': venv)
みたいな表示が出て、ローカルの仮想環境を認識してくれているのが分かります。
そうしたら、スクレイピングするプログラムを書きます。
import requests
r = requests.get("http://abehiroshi.la.coocan.jp/")
print(r.text)
動かしてみましょう。
VSCode は賢いので、VSCode 内でターミナルを開くとシェルが自動で仮想環境に入ってくれます。なので普通に
python abe.py
だけでOKです。
もし、VSCode 内ではなくコンソールなどでコマンドを打ちたいのであれば
poetry run python abe.py
または
poetry shell
python abe.py
となります。