実行環境
Ubuntu 20.04.2 LTS
Python3.8
状況
pipenv install コマンドを実行し、仮想環境を作成しようとしたときにエラー
Creating a virtualenv for this project...
Pipfile: /home/youichi_io/work/Pipfile
Using /usr/bin/python3.8 (3.8.10) to create virtualenv...
⠹ Creating virtual environment...ModuleNotFoundError: No module named 'virtualenv.seed.via_app_data'
✘ Failed creating virtual environment
[pipenv.exceptions.VirtualenvCreationException]:
Failed to create virtual environment.
思い当たる要因
以前、Anacondaをインストールした。Anacondaは全部入りの便利なディストリビューションだが、既存環境を荒らしまくる側面がある(勝手にパスを書き換えたりなど)
解決に至るまで
調べていると、以下の記事を発見。
https://www.markhneedham.com/blog/2020/08/07/pipenv-import-file-no-module-named-virtualenv/
It’s a conflict between two existing virtualenv installation. You might have installed latest version, however if in the same python you also have an old version installed this error will pop up. Maybe you have a user and system installation in parallel.
…なんて?日本語でおk
これは、2つの既存のvirtualenvインストール間の競合です。最新バージョンをインストールした可能性がありますが、同じPythonに古いバージョンもインストールされている場合は、このエラーがポップアップ表示されます。たぶん、ユーザーとシステムを並行してインストールしています。
なるほど、Anacondaを入れたせいでvirtualenvの設定が壊れたようだ。
以下、記事に従っていく。まず、pipenvをアンインストール。
$ pip3 uninstall pipenv
Found existing installation: pipenv 2021.5.29
Uninstalling pipenv-2021.5.29:
Would remove:
/home/youichi_io/.local/bin/pipenv
/home/youichi_io/.local/bin/pipenv-resolver
/home/youichi_io/.local/lib/python3.8/site-packages/pipenv-2021.5.29.dist-info/*
/home/youichi_io/.local/lib/python3.8/site-packages/pipenv/*
Proceed (y/n)? y
Successfully uninstalled pipenv-2021.5.29
~/.local/binディレクトリに何かが残っているかどうかを確認。
’youichi_io’はユーザ名に置き換えてください。
$ ls -alh /home/youichi_io/.local/bin/
合計 60K
drwxrwxr-x 2 youichi_io youichi_io 4.0K 8月 17 01:52 .
drwx------ 5 youichi_io youichi_io 4.0K 5月 14 22:44 ..
-rwxrwxr-x 1 youichi_io youichi_io 238 5月 14 22:44 virtualenv
-rwxrwxr-x 1 youichi_io youichi_io 214 5月 14 22:44 virtualenv-clone
記事の通り、virtualenvは残っている。
virtualenvを取り除く。
$ pip3 uninstall virtualenv
Found existing installation: virtualenv 20.4.6
Uninstalling virtualenv-20.4.6:
Would remove:
/home/youichi_io/.local/bin/virtualenv
/home/youichi_io/.local/lib/python3.8/site-packages/virtualenv-20.4.6.dist-info/*
/home/youichi_io/.local/lib/python3.8/site-packages/virtualenv/*
Proceed (y/n)? y
Successfully uninstalled virtualenv-20.4.6
記事通りなら次にpipenvをインストールするが、どうやらインストール済みのようだ(なぜ?)
$ pip3 install pipenv
Requirement already satisfied: pipenv in /usr/lib/python3/dist-packages (11.9.0)
仮想環境を再度作成してみる。
記事通りのコマンドでは動かない。
$ pipenv shell
bash: /home/youichi_io/.local/bin/pipenv: そのようなファイルやディレクトリはありません
モジュールとして呼び出してみる。
$ python3 -m pipenv install
Creating a virtualenv for this project…
Using /usr/bin/python3 (3.8.10) to create virtualenv…
⠋created virtual environment CPython3.8.10.final.0-64 in 277ms
creator CPython3Posix(dest=/home/youichi_io/.local/share/virtualenvs/0817-LJiH3LFs, clear=False, global=False)
seeder FromAppData(download=False, pip=latest, setuptools=latest, wheel=latest, pkg_resources=latest, via=copy, app_data_dir=/home/youichi_io/.local/share/virtualenv/seed-app-data/v1.0.1.debian.1)
activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
Virtualenv location: /home/youichi_io/.local/share/virtualenvs/0817-LJiH3LFs
Creating a Pipfile for this project…
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Updated Pipfile.lock (9e16cc)!
Installing dependencies from Pipfile.lock (9e16cc)…
🐍 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 0/0 — 00:00:00
To activate this project's virtualenv, run the following:
$ pipenv shell
できた!
環境構築はつらいよ
環境構築は奥が深いです。沼です。
エラーの原因がわかりにくいし、ふとしたことで環境が壊れるし。
しかし、エラー内容でググったときに同士が多いことに気づきます。
ちょっと安心しますね。