2013-04-28 4 views
5

ピップを使用してパッケージをローカルに~/.localにインストールしようとしています。問題は、(古いバージョンの)パッケージがすでにシステム上でグローバルに利用可能であることです。グローバルなpythonパッケージのディレクトリがではなく、PYTHONPATHにあるであるにもかかわらず、pipはパッケージ要件が満たされていると考えてインストールを拒否します。私は解決策が適用されないので、sudoを使用していない以外これは、ここで説明する問題に類似している:pip - Requirement already satisfied?ピップを使用してグローバルな要件を満たしているパッケージをローカルにインストールする

私が行う場合:

pip install --user numpy 

それは言う:

しかし
Requirement already satisfied (use --upgrade to upgrade): numpy in /usr/local/lib/python2.7/dist-packages/numpy-1.6.2-py2.7-linux-x86_64.egg 

/usr/local/lib/...は私のPYTHONPATHにありません。 PYTHONPATHの唯一のものは~/.localです。

私がしようとした場合:

pip install --user --upgrade numpy 

それがnumpyのダウンロードし、それをコンパイルした後、私は--userフラグにもかかわらず、世界的なインストールをやっているし、私が手に考えて:

Installing collected packages: numpy 
    Found existing installation: numpy 1.6.2 
    Uninstalling numpy: 
Exception: 
Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/basecommand.py", line 107, in main 
    status = self.run(options, args) 
    File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/commands/install.py", line 261, in run 
    requirement_set.install(install_options, global_options) 
    File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/req.py", line 1162, in install 
    requirement.uninstall(auto_confirm=True) 
    File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/req.py", line 495, in uninstall 
    paths_to_remove.remove(auto_confirm) 
    File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/req.py", line 1492, in remove 
    renames(path, new_path) 
    File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/util.py", line 273, in renames 
    shutil.move(old, new) 
    File "/usr/lib/python2.7/shutil.py", line 300, in move 
    os.unlink(src) 
OSError: [Errno 13] Permission denied: '/usr/bin/f2py' 

これはどのように修正できますか? --userフラグが渡されたときに、なぜグローバルなアクセス許可が必要な操作をしようとしているのかわかりません。

pipに~/.localを使用し、システム上の他のすべてを無視する方法がありますか? (私はvirtualenvを使用したくないそれはここでは不要ですが、私は複数の環境を望んでいない、ただ一つ!。)

+0

「virtualenv」を使用しない理由は、これが作成された正確な理由ではありませんか? – dm03514

+3

Numpyはpipでうまくいきません。 '/ usr/bin /'に 'f2py'をインストールしようとしています。おそらく、これはPythonの 'site-packages'の外にあるからです。たぶん、そこにインストールする必要がある他のファイルがありますし、pipはそれを処理する方法を知らないようです。 virtualenvがここで助けになるかどうかは分かりません。 – tiago

+0

@tiago * Numpyはpipでうまくいきません。 /usr/bin/.*にf2pyをインストールしようとしています。いいえ、そうではありません。権限の不足のために失敗する**システムnumpyを**アンインストールしようとするピップです。私の答えを見てください。 –

答えて

2

Citingマーカス・スミス(PIPのメンテナ):

あなたがグローバルを考える場合サイトが古くなっている、と ユーザサイトで最新にしたい、そして使用:(...)(古いバージョンでは)パッケージがすでに利用可能である
pip install --upgrade --user SomePackage

ので、グローバルシステムに上記のように--upgradeオプションを使用する必要があります。 システムnumpyパッケージをアンインストールすると、おそらくあなたが使っているpipのバージョン(1.2.1)のバグです。これは、#705を持っている1.3 PIP

--userオプションに関連する現在のバージョンなど、多くの問題が彼の後のコメントで特定の問題にバージョン1.3と1.4

EDIT

マーカス・スミスpointsで固定し、試してみてください--userと--upgrade を一緒に使用するために重要です。

関連する問題