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が使えます。
この変更による悪影響はわかりませんので、自己責任でおねがいします。