6

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

私が行った場合:

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フラグが渡されたときに、グローバル権限を必要とする何かをしようとする理由がわかりません。

~/.localシステム上の他のすべてを使用して無視するようにpipに指示する方法はありますか? (virtualenv は使いたくない! ここでは不要です。複数の環境は必要ありません。1 つのみです。)

4

1 に答える 1

2

Marcus Smith (pip のメンテナー) の引用:

グローバル サイトが古くなっていると思われ、ユーザー サイトに最新のものが必要な場合は、次を使用します。
pip install --upgrade --user SomePackage

(...) パッケージ (古いバージョン) はシステム上で既にグローバルに利用可能であるため、上記--upgradeのマーカスの発言に従ってオプションを使用する必要があります。システム numpy パッケージのアンインストールは、使用している pip のバージョン (1.2.1) のバグである可能性があります。--userバージョン 1.3 および 1.4 でオプションに関する多くの問題が修正されているため、現在のバージョンを試してください。

編集

マーカス・スミスは、後のコメントで特定の問題を指摘しています。

pip 1.3 には #705 があり、 --user と --upgrade を一緒に使用する場合に重要です。

于 2013-11-30T18:02:01.447 に答える