エックスサーバー上でpyenvでpython環境(anaconda)を作ったけど、pip installしたらエラーになった
conda installでインストールできないライブラリはpip installでインストールしようと思ってましたが、いざpip installを実行したらエラーになりました。
エラーメッセージは、
File “/PATH/.pyenv/versions/anaconda3-4.3.0/lib/python3.6/site-packages/pip/_vendor/distro.py”, line 984, in _get_distro_release_info
basenames = os.listdir(_UNIXCONFDIR)
PermissionError: [Errno 13] 許可がありません: ‘/etc’
こんな感じで、やはり/etcに権限ない、とのこと。
[adsense]
普通はconda installでインストールできる
anacondaの場合、通常はpipよりもconda installを使います。
(conda listにパッケージがある場合)
conda install -c conda-forge cerberus
とか
conda install -c conda-forge websocket-client
とかです。
conda listにないパッケージの場合
pip installしましたが、エラー発生。
・・・省略・・・
File “/PATH/.pyenv/versions/anaconda3-4.3.0/lib/python3.6/site-packages/pip/_vendor/distro.py”, line 984, in _get_distro_release_info
basenames = os.listdir(_UNIXCONFDIR)
PermissionError: [Errno 13] 許可がありません: ‘/etc’
ユーザー領域にanacondaをインストールしたので大丈夫だと思っていましたが、/etcに権限ない、とエラーになってしまいました。
まず試したこと
pipでインストールディレクトリを指定するオプションがあるので、そのオプションを使ってみました。
pip install –install-option=”–prefix=/PATH/TO/HOME_DIR” インストールしたいライブラリ名
pip install インストールしたいライブラリ名 -t /PATH/TO/HOME_DIR
pip install インストールしたいライブラリ名 –user
3つとも状況変わらず同じエラーが発生。
解決策
エラーメッセージに表示されているファイル「distro.py」を書き換えました。
※インデントは適宜調整してください。
【対象ファイル】pyenv/versions/anaconda3-4.3.0/lib/python3.6/site-packages/pip/_vendor/distro.py
【変更内容】
else:
try:★ここを追加
basenames = os.listdir(_UNIXCONFDIR)
# We sort for repeatability in cases where there are multiple
# distro specific files; e.g. CentOS, Oracle, Enterprise all
# containing `redhat-release` on top of their own.
basenames.sort()
except OSError:★ここを追加
basenames = [“os-release”]★ここを追加
for basename in basenames:
これでエラー解消し、無事pip installできました。
コメント
私もまったく同じ現象で困っていたので助かりました。ありがとうございます!
山田さま
コメントありがとうございます!
解決できてよかったです!