Ubuntu 18.04 に pipsi + pipenv + pyenv で Python の開発環境を構築する

シェアする

Ubuntu上で汎用的に使えるPython開発環境の構築方法を紹介します.

スポンサーリンク
レクタングル(大)広告

検証環境

Vagrant でクリーンな VM を立て,その中で検証しました.

目標

目標はシステム領域を汚さない開発環境の構築です.具体的には次のツールを導入することで実現します.

  • Python3: apt でシステムに導入
  • pipsi: apt でシステムに導入
  • pipenv: pipsi でユーザー領域に導入
  • pyenv: setup script でユーザー領域に導入

環境構築

pipsi の導入

まずはシステムの Python3 と Python の CLI ツールをユーザー領域にインストールできる pipsi を導入します.

sudo apt install -y python3 pipsi

pipenv の導入

次に pipsi を使って Pipenv をインストールします.pipsi は virtualenv に依存しているので,一時的に Python の仮想環境を作成してその中で virtualenv をインストールしてから,pipsi 環境内に再度 virtualenv をインストールします.最後に仮想環境から脱出し,この仮想環境はもう必要がないので削除します.

python3 /usr/lib/python3/dist-packages/virtualenv.py --python=python3 pytmp    # 一時的な仮想環境を作成
cd pytmp    # 仮想環境のディレクトリに入る
. ./bin/activate    # 仮想環境の有効化
pip install virtualenv    # 仮想環境内に virtualenv をインストール (これがないと pipsi が動かない)
pipsi install virtualenv    # pipsi に virtualenv をインストール (仮想環境内に virtualenv があるから動く)
deactivate    # 仮想環境の非活性化
cd ../    # 仮想環境のディレクトリから出る
rm -rf pytmp    # 不要になった仮想環境を削除する

pipsi でインストールされたコマンドは ~/.local/bin/ に配置されます.次は pipenv とその依存コマンドの pew を pipsi を使って導入します.

pipsi install pipenv
pipsi install pew

pipsi でインストールされたパッケージの一覧は次のようにして確認できます.

$ pipsi list
Packages and scripts installed through pipsi:
  Package "pew":
    pew
  Package "pipenv":
    pipenv-resolver
    pipenv
  Package "virtualenv":
    virtualenv

pipenv がうまく動いているか確認します.

mkdir pywork    # 作業用ディレクトリの作成
mv pywork    # 作業用ディレクトリへ移動
pipenv --python 3    # pipenv 環境の初期化
pipenv install requests    # package がインストール出来ることの確認

上記コマンドが問題なく機能すれば Pipenv は正常にインストールできています.利便性のために pipenv の bash 補完の設定をしておきます.pipenv --completionで出力される次のコードを ~/.profile に配置して下さい.このコマンドは実行が若干重いので展開後のコードを直接設定するのがおすすめです.

_pipenv_completion() {
    local IFS=$'\t'
    COMPREPLY=( $( env COMP_WORDS="${COMP_WORDS[*]}" \
                   COMP_CWORD=$COMP_CWORD \
                   _PIPENV_COMPLETE=complete-bash $1 ) )
    return 0
}

complete -F _pipenv_completion -o default pipenv

pyenv の導入

最後に pyenv を導入します.Pipenv は仮想環境を作成する際に Python のバージョンの指定が出来ますが,そのときにインストールされていないバージョンは pyenv を利用して自動的に導入してくれるので併用をおすすめします.

curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash    # pyenv のインストール

~/.profile に次の内容を追加して . ~/.profile で再読込すれば完了です.

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

念の為に更新をしておきます.

pyenv update

pyenv が Python をソースコードからビルドするときに必要となるパッケージをインストールすれば環境構築は完了です.

sudo apt install -y make build-essential zlib1g-dev libssl-dev libsqlite3-dev libreadline-dev libgdbm-dev libncurses5-dev libbz2-dev liblzma-dev tk-dev

動作確認

pipenv と pyenv の連携が上手く動いているか確認します.Pipenv で仮想環境を作成する際に,現在入っていない Python のバージョンを指定したとき,pyenv がそのバージョンの Python を自動的にインストールして使ってくれれば成功です.

pyenv でインストールされている Python のバージョンを確認しておきます.現状何も入っていないので出力はされないはずです.

pyenv versions

適当なディレクトリを作って pipenv を用いて仮想環境を作ってみましょう.今回はインストールされていない 3.7.1 を指定してみます.

mkdir mypjc
cd mypjc
pipenv --python 3.7.1

正常に終われば成功です.pyenv 管理下でインストールされているか確認できます.

pyenv versions
> 3.7.1

まとめ

今回はシステムを全く汚さない形で Python の開発環境を構築しました.システムには pip 自体が入っていないので間違えてシステムの pip コマンドを発行してグローバルにパッケージをインストールしてしまうこともありません.Ubuntu 18.04 になってからは pipsi を apt でインストール出来るようになったので敷居が低くなったと思います.日頃からシステムを汚さないように心がけることで「いつの間にか環境に不整合が起きていた」といった状況を予防することができます.ぜひ当記事の方法で安定した Python 環境を構築してガンガン開発していって下さい.

スポンサーリンク
レクタングル(大)広告

シェアする

フォローする

スポンサーリンク
レクタングル(大)広告