Pythonは3.6
pyenv, virtualenvでの仮想環境です。
OSはCentOS7。レンタルサーバーです。
レンタルサーバーはルート権限くれないと思うので、その時の対処法。
レンサバで任意のPythonが使えるようになってる前提です。
pipコマンドを実行するとエラーがでる
File "/home/usename/.pyenv/versions/miniconda3-3.19.0/envs/miniconda36-venv/lib/python3.6/site-packages/pip/_vendor/distro.py", line 984, in _get_distro_release_info
basenames = os.listdir(_UNIXCONFDIR)
PermissionError: [Errno 13] 許可がありません: '/etc'
上記の通り、HOMEディレクトリ以下のpyenv, pyenv-virtualenvで仮想環境を構築しています。
easy_installは通るけどpipはpip freezeでもエラー吐きます。
対応策
/python3.6/site-packages/pip/_vendor/distro.pyのbasenames = os.listdir(_UNIXCONFDIR)でエラーが出ているので、
distro.pyを書き換えます。
distro.pyの場所は各自の環境で変わるので探してください。
basenames = os.listdir("/home/username/local/etc") # ←os.listdir()に渡すデータを_UNIXCONFDIRから適当なディレクトリに変更
/home/username/local/etcは事前に作っておきました。中身は空です。
これでpipが使えます。
この変更による悪影響はわかりませんので、自己責任でおねがいします。