2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ルート権限がないサーバーでpipを使う方法

Last updated at Posted at 2017-12-15

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は通るけどpippip freezeでもエラー吐きます。

対応策

/python3.6/site-packages/pip/_vendor/distro.pybasenames = os.listdir(_UNIXCONFDIR)でエラーが出ているので、
distro.pyを書き換えます。
distro.pyの場所は各自の環境で変わるので探してください。

basenames = os.listdir("/home/username/local/etc") # ←os.listdir()に渡すデータを_UNIXCONFDIRから適当なディレクトリに変更

/home/username/local/etcは事前に作っておきました。中身は空です。

これでpipが使えます。

この変更による悪影響はわかりませんので、自己責任でおねがいします。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?