pipenvとpyenvを再インストールした

投稿者: | 2019-09-26

Pythonの仮想環境を整理した。

基本的にはpipenvを利用するが、昔使ってたpyenvpyenv-virtualenvが存在して、ごちゃごちゃしていた。

一度全てを削除して、再インストールを行い、リリース済みのウェブアプリのpythonのバージョンを上げてみた。 結果としては、今の所問題は発生していない。

バックアップを取ってから行うと安心。

アンインストール作業

pipenv以外のツールのアンインストールはこちらを参考にした。 pyenvをちゃんと消してから入れ直す - Qiita

上記の参考に従い、

$ which python  #=> /Users/xxx/.pyenv/shims/python みたいなパスが出ると思います
$ rm -rf /Users/xxx/.pyenv  # 上の操作で出てきたパスの.pyenvまでのパスを入力します
$ brew uninstall pyenv-virtualenv  # virtualenvを使っている場合はこれを先にする
$ brew uninstall pyenv
$ brew list  # pyenv, virtualenvが消えていることを確認する

ここまで行った後、pipenvをアンインストールした。

$ brew uninstall pipenv

仮装環境は全て消えるので注意。

再インストール作業

pipenvでは、pyenv-virtualenvは不要なので、インストールはしない。 pipenvのバージョン指定については、Can't switch python version on Pipenv - Stack Overflowを参考にした。

$ brew install pyenv
$ brew install pipenv
# pythonの新しめなバージョンを用意
$ pyenv install 3.7.4

既存アプリの書き換え作業


# pipfileのpythonのバージョンを上記でインストールした3.7.4に書き換える。
#`pipenv run`はこの段階では動かない。以下のような表示が出る
# $ pipenv install
# Warning: Your Pipfile requires python_version 3.7.4, but you are using None (/Users/username/.venv/bin/python).
#   $ pipenv --rm and rebuilding the virtual environment may resolve the issue.
#   $ pipenv check will surely fail.
# Pipfile.lock (b461a3) out of date, updating to (674c62)…
# Locking [dev-packages] dependencies…
# ✘ Locking Failed! 

# pipenvに3.7.4を使うように指定する
$ pipenv --python=3.7.4
# Virtualenv already exists!
# Removing existing virtualenv…
# Creating a virtualenv for this project…
# Pipfile: /app_path/Pipfile
# Using /Users/username/.pyenv/versions/3.7.4/bin/python3 (3.7.4) to create virtualenv…
# ⠧ Creating virtual environment...Using base prefix '/Users/username/.pyenv/versions/3.7.4'
# New python executable in /app_path/.venv/bin/python3
# Also creating executable in /app_path/.venv/bin/python
# Installing setuptools, pip, wheel...
# done.
# Running virtualenv with interpreter /Users/username/.pyenv/versions/3.7.4/bin/python3
# 
# ✔ Successfully created virtual environment! 
# Virtualenv location: /app_path/.venv

# 最後に依存パッケージをインストールする
$ pipenv install

# 確認
$ pipenv run python manage.py --help

新しく仮装環境を作るときも、

$ pipenv install --python=3.7.4

でOK。バージョンを変えたいときは、pyenvでインストールして、PipfilePythonバージョンを書き換えたうえで、上の3.7.4を置き換えて実行すればいいだろう。