エックスサーバーでanacondaでもpip install がエラーになった

本ページにはプロモーションが含まれています。
トラブル

エックスサーバー上で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できました。

コメント

  1. 山田 より:

    私もまったく同じ現象で困っていたので助かりました。ありがとうございます!

  2. Saboh より:

    山田さま

    コメントありがとうございます!
    解決できてよかったです!

タイトルとURLをコピーしました