2016-12-27 2 views
1

pipを使用しようとしていて、installまたはupgradeにコマンドを実行するたびに、このタイプのエラー(OSError)が表示されます。許可に関するpipエラー、これは修正できますか?

私はパッケージをインストールするだけでsudoする必要はありませんが、これは必須ですか?

Exception: 
Traceback (most recent call last): 
    File "/Library/Python/2.7/site-packages/pip/basecommand.py", line 215, in main 
    status = self.run(options, args) 
    File "/Library/Python/2.7/site-packages/pip/commands/install.py", line 342, in run 
    prefix=options.prefix_path, 
    File "/Library/Python/2.7/site-packages/pip/req/req_set.py", line 784, in install 
    **kwargs 
    File "/Library/Python/2.7/site-packages/pip/req/req_install.py", line 851, in install 
    self.move_wheel_files(self.source_dir, root=root, prefix=prefix) 
    File "/Library/Python/2.7/site-packages/pip/req/req_install.py", line 1064, in move_wheel_files 
    isolated=self.isolated, 
    File "/Library/Python/2.7/site-packages/pip/wheel.py", line 345, in move_wheel_files 
    clobber(source, lib_dir, True) 
    File "/Library/Python/2.7/site-packages/pip/wheel.py", line 316, in clobber 
    ensure_dir(destdir) 
    File "/Library/Python/2.7/site-packages/pip/utils/__init__.py", line 83, in ensure_dir 
    os.makedirs(path) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.py", line 157, in makedirs 
    mkdir(name, mode) 
OSError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/docutils' 
+1

sudoを使用しない場合は、virtualenvを使用してください。 –

+0

@ DavidK.Hessだから、これをする必要があるのは普通ですか? – Blankman

+0

はい。デフォルトでは、追加するpython標準ライブラリとパッケージは、管理領域にインストールされます。 –

答えて

1

すべてのユーザーで共有されている場所を変更しようとしています。正当な理由がある場合はsudo -ingを行なわないと実行できません(そうでない場合は、すべてのユーザーデータを削除するか、閲覧用のホームフォルダにコピーするなどの方法で、pythonを置き換えることができます)。

pip--user引数を~/.localにインストールすると、他のユーザーではなく、新しいパッケージがインストールされるように、自分だけで変更を加えることができます。

仮想環境ももう一つの選択肢ですが、それはある範囲まで過剰です(アクティブな仮想環境はシステムsite-packagesディレクトリから完全に分離しますので、すべてのパッケージを必要に応じて再インストールする必要があります)。

+0

がベストプラクティスですか?私はラップトップの唯一の使用です。 – Blankman

+1

@Blankman:あなたが唯一のユーザーであれば、どちらのアプローチをとっても問題はありません。つまり、2番目のユーザが(セキュリティのために制限されたアカウントで実行されるプロセスを含む)発生した場合、 '--user'でインストールすると、新しいパッケージ、システム単位のインストールが表示されないことを意味します例えば ​​'sudo'から実行すること)は、誰もがそれを見ることを保証します。 – ShadowRanger

+0

彼が唯一のユーザーである場合だけでなく、私は私のマシン上の唯一のユーザーですが、孤立した開発環境を維持するためにいくつかの仮想環境を使用しています。その問題はすでに「これはもっと良い方法です...」という質問に答えられています。 @David K. Hessが述べたように、私は 'virtualenv'もお薦めします。 –

0

LinuxとMac OSには独自のパッケージ化されたPythonインタプリタが付属しており、開発目的には使用しないでください。 virtualenvを使い始めると、パッケージをインストールしたり、独自のライブラリのインストールをテストしたり、システム全体にインストールされているPython環境に影響を与えずに、孤立したPython環境を作成することができます。 virtualenvにスクリプトのインストール、作成、実行方法に関するチュートリアルのサイトをチェックしてください。

関連する問題