概要
pyenvでpythonのversion管理をしていますが、globalで使っていた本体のパッケージがconflictを起こしたので、それに対する対処法を書いて起きます。プロジェクトごとに仮想環境作れば問題ない話ですが。。
動作環境
Mac OS Mojave 10.14.4
python 3.6.5
pyenv 1.2.5
pip3 19.1
エラー
Traceback (most recent call last):
File "/Users/***/.pyenv/versions/3.6.5/lib/python3.6/site-packages/pkg_resources/__init__.py", line 574, in _build_master
ws.require(__requires__)
File "/Users/***/.pyenv/versions/3.6.5/lib/python3.6/site-packages/pkg_resources/__init__.py", line 892, in require
needed = self.resolve(parse_requirements(requirements))
File "/Users/***/.pyenv/versions/3.6.5/lib/python3.6/site-packages/pkg_resources/__init__.py", line 783, in resolve
raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.ContextualVersionConflict: (pycodestyle 2.4.0 (/Users/***/.pyenv/versions/3.6.5/lib/python3.6/site-packages), Requirement.parse('pycodestyle<2.4.0,>=2.0.0'), {'flake8'})
最後の一文を見ればわかりますが、どうもあるパッケージがconflictを起こしているみたいです。
解決策
現在のパッケージをuninstallして、新しく指定されているバージョンの範囲内のパッケージをinstallします。
$ pip3 uninstall pycodestyle
Uninstalling pycodestyle-2.4.0:
Would remove:
/Users/***/.pyenv/versions/3.6.5/bin/pycodestyle
/Users/***/.pyenv/versions/3.6.5/lib/python3.6/site-packages/pep8.py
/Users/***/.pyenv/versions/3.6.5/lib/python3.6/site-packages/pycodestyle-2.4.0.dist-info/*
/Users/***/.pyenv/versions/3.6.5/lib/python3.6/site-packages/pycodestyle.py
Proceed (y/n)? y
Successfully uninstalled pycodestyle-2.4.0
要求されているバージョンを再インストールします。
$ pip3 install pycodestyle==2.3.0
Installing collected packages: pycodestyle
Successfully installed pycodestyle-2.3.0
globalで色々なプロジェクトのパッケージをごちゃごちゃにしていたら、このようなことが起こりかねないので、プロジェクトごとにパッケージを分けて管理するようにしたら良いと思います。