メインコンテンツへスキップ

Pyenv、pipx、poetryによるPython開発環境(2020)

··1 分·
Macos Linux Python
Makoto Morinaga
著者
Makoto Morinaga
技術メモ、コーディング、環境構築のための個人ノート。
目次

Pythonの開発環境を構築します。

概要は以下の通りです。

  • Pythonのバージョン管理をpyenvで実施
  • pipでインストールするコマンドの管理をpipxで実施
  • Pythonのパッケージ管理をpoetryで実施

Pythonのバージョン管理
#

デフォルトでインストールされているPythonをそのまま利用したくない理由は以下の通りです。

  • デフォルトのPythonのバージョンはOSやディストリビューションによって異なる(そもそもインストールされていない可能性もある)。
  • デフォルトのPythonはシステムで利用されている可能性があるため、できるだけ汚したくない。
  • プロジェクトごとに任意のバージョンのPythonを利用したい。
  • 個人利用ならば、常に最新バージョンのPythonを使用したい。

そこで、pyenvを利用します。pyenvを使うと、好きなバージョンのPythonのインストールと切替が容易になり、Pythonの仮想環境を自由に作成できます。

pyenvのインストール
#

公式のインストール方法に従ってインストールを進めます。 まず、以下のコマンドでpyenvをクローンします。 MacOSの場合は、homebrewでもpyenvをインストールできますが、Linuxと環境を揃えたいので、MacOSでもGitHubからクローンします。

Terminal
git clone https://github.com/pyenv/pyenv.git ~/.pyenv

次に、shellにpyenvへのPATHを通します(zshを利用する場合)。

  • shellがbashの場合

    Terminal
    echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
    echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
  • shellがzshの場合

    Terminal
    echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
    echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc

以下のコマンドでshell起動時に pyenv init が実行されるようにします。

  • shellがbashの場合

    Terminal
    echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init --path)"\nfi' >> ~/.bash_profile
  • shellがzshの場合

    Terminal
    echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init --path)"\nfi' >> ~/.zshrc

最後に以下のコマンドでshellを再起動して、インストールが完了です。

Terminal
exec "$SHELL"

pyenvによるPythonのインストールと指定
#

pyenvを利用してPythonをインストールします。

以下のコマンドでインストール可能なPythonのバージョンを確認できます。

Terminal
pyenv install --list

以下のコマンドでPython 3.8.4をインストールします。

Terminal
pyenv install 3.8.4

pyenv global コマンドでインストールしたPythonをデフォルトで使用するようにします。

Terminal
pyenv global 3.8.4
python --version

pipでインストールするコマンドの管理
#

Pythonには、pipでインストールできるコマンドが多数ありますが、依存関係の管理が煩雑になる場合があります。

そこで、pipxを利用してアプリケーション用の仮想環境を作成し、自由に管理できるようにします。

pipxのインストール
#

公式のインストール方法に従い、以下のコマンドでpipxをインストールします。

Terminal
pip install pipx
pipx ensurepath

pipxでのコマンドのインストール
#

以下のコマンドで指定したコマンドをインストールできます。

Terminal
pipx install <コマンド名>

例として、以下のコマンドをインストールします。

Terminal
pipx install jupyterlab
pipx install flake8
pipx install isort
pipx install mlflow

Pythonのパッケージ管理
#

Pythonでは requirements.txt を使用してpipでパッケージ管理が可能ですが、依存関係の管理が大変です。 そこで、パッケージ管理ツールをとして、Poetryを使用します。

Poetryのインストール
#

公式のインストール方法に従い、以下のコマンドでPoetryをインストールします。

Terminal
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python

デフォルトでは .venv がホームディレクトリ内に作成されますが、プロジェクトディレクトリ内に作成するように設定します。

Terminal
poetry config virtualenvs.in-project true

Python開発環境の作成
#

まず、プロジェクト用ディレクトリを作成し、移動します。

Terminal
mkdir project1
cd project1

Python 3.7.8をインストールし、プロジェクト用ディレクトリで有効化します。

Terminal
pyenv install 3.7.8
pyenv local 3.7.8

Poetryを初期化し、パッケージを追加します。

Terminal
poetry init
poetry add <パッケージ名>

関連記事

SambaによるTime Machineバックアップ
··1 分
Linux Macos Time-Machine Samba
Pythonのデフォルト引数での注意点
··1 分
Python
bit全探索の基本
··1 分
Algorithm Python