LoginSignup
55
69

More than 3 years have passed since last update.

【Ubuntu 18.04】pyenv+pipenvでPython環境構築

Last updated at Posted at 2019-11-04

はじめに

pyenvとpipenvを使った仮想環境管理環境(?)を作る.
Python自体のバージョン管理をpyenvで行い, プロジェクト毎の仮想環境の構築やパッケージ管理をpipenvで行うようにする.

環境

  • Ubuntu 18.04
  • apt installが使える

インストール

install.sh
#!/bin/bash

# Install dependencies
echo "ユーザのパスワード" | sudo apt update && sudo apt install -y --no-install-recommends \
        build-essential \
        libffi-dev \
        libssl-dev \
        zlib1g-dev \
        libbz2-dev \
        libreadline-dev \
        libsqlite3-dev \
        git

# Download pyenv
git clone https://github.com/pyenv/pyenv.git ~/.pyenv

# Update .bash_profile
touch ~/.bash_profile
echo -e "# pyenv paths" >> ~/.bash_profile
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
source ~/.bash_profile
pyenv -v

# Install Python and set default
pyenv install 3.7.4
pyenv global 3.7.4

# Install pipenv
pip install pipenv

このシェルスクリプトを次のように実行することで, pyenv/python/pipenvのインストールが行われる.

./install.sh

権限が無いと怒られたら, chmod +rx install.shで読み取り・実行権限を与える.
勿論一行一行ターミナルに打って実行しても問題ない.

使い方

hogeというプロジェクトを作り, Python3.6の仮想環境を立ち上げてみる.

まずpyenvで3.6バージョンのPythonをインストール.

$ pyenv install 3.6.9

続いてpipenvで仮想環境を作る.

$ mkdir hoge
$ cd hoge
$ pipenv install --python 3.6.9
Creating a virtualenv for this project…
Pipfile: /home/**/hoge/Pipfile
Using /home/**/.pyenv/versions/3.6.9/bin/python3 (3.6.9) to create virtualenv…

pyenvでインストールしたPython3.6.9が使われている.

hoge/下にPipfilePipfile.lockがあれば成功.

  • 仮想環境の有効化
$ pipenv shell
(hoge) user:~/hoge$ 
  • 仮想環境にライブラリをインストール
$ pipenv install numpy

pip installの代わりにpipenv installを使う. 間違ってpip installしても仮想環境外を汚すことは無いが, そのライブラリは Pipfile/Pipfile.lockで管理されないので気をつける.

  • 仮想環境から抜ける
$ exit
  • 仮想環境の削除
$ pipenv --rm

いいところ

  • インストールが簡単&構成が分かりやすい
  • pipenvでライブラリをインストールするとPipfile/Pipfile.lockも自動更新されるので, requirements.txtと違って更新忘れが無い
    • gitとの相性もいい
    • pipenv install -r requirements.txtrequirements.txtからパッケージ管理を引き継げる

わるいところ

  • 仮想環境の有効/無効化が面倒くさい. 使用感はvirtualenvと近いかも.
  • 間違えてpip installしそうになる.
  • Pipfile.lockの作成に時間がかかる

おまけ:仮想環境の置き場所

デフォルトでは, pipenvで作成した仮想環境は~/.local/share/virtualenvs/以下に置かれる. pipenv --rmを行うとこの仮想環境が削除されるのであるが, それを忘れてプロジェクトディレクトリだけ削除すると仮想環境自体は残り続ける.

プロジェクト直下に仮想環境を作るには, 環境変数$PIPENV_VENV_IN_PROJECTを定義する必要がある.

echo -e "# pipenv property" >> ~/.bash_profile
echo 'export PIPENV_VENV_IN_PROJECT=1' >> ~/.bash_profile
source ~/.bash_profile

こうするとプロジェクト直下に仮想環境.venv/が置かれるようになり, プロジェクトディレクトリを削除すれば一緒に仮想環境も削除される.

参考にしたサイト

55
69
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
55
69