Ubuntu 15.04でpipに奇妙な問題がありました。特定のディレクトリに「-t」オプションを使用してインストールしようとすると、次のエラーで失敗します。
error: can't combine user with prefix, exec_prefix/home, or install_(plat)base
たとえば、pip install -t <directory> <package>
はこのエラーで失敗します。
私のpipはバージョン1.5.6で、Pythonバージョンは2.7です。
14.10システムでまったく同じコマンドを問題なく実行したので、これは15.04に特有の問題であるとのみ結論付けることができます。
同じ問題にぶつかりましたが、デフォルトのディストリビューションのピップが古い1.5.6で、現在リリースされているバージョンが7.1.0であることに気付きました。問題を追跡するのは難しいので、あちこちで「干し草の山の針」を探して、次のようにそれを取り外して手動でインストールしました。
このコメント: https://github.com/pypa/pip/issues/1093#issuecomment-10312788 このスタックで参照: https://stackoverflow.com/questions/19460232/ pip-list-crashes-with-an-assertionerror
Pipを削除します。
Sudo apt-get remove --auto-remove python-pip
インストールスクリプトをダウンロードします。
wget https://bootstrap.pypa.io/get-pip.py
再度インストールします。
Sudo python get-pip.py
コマンドをbinにリンクします:
Sudo ln -s [PIP_HOME]/bin/pip /usr/local/bin/pip
Sudo ln -s [PIP_HOME]/bin/wheel /usr/local/bin/wheel
Sudo ln -s [PIP_HOME]/bin/easy_install /usr/local/bin/easy_install
[PIP_HOME]はpipパッケージのディレクトリです。
今pip -V
を実行すると、
pip 7.1.0 from /home/tiberiu/.local/lib/python2.7/site-packages (python 2.7)
根本的な問題に戻ると、コマンドは最新バージョンでpip install -r requirements.txt -t lib
成功します。
@Tiberiu Cの answer は頭に釘を打ちます。ディストリビューションのpip
が古いとは信じられません。ただし、それを解決するための手順はかなり手間がかかるように思えるので、システムにeasy_install
が既にある場合は、次の行で彼のソリューションを実装することで逃げることができます。
Sudo easy_install -U pip
最初にpip
の自己アップグレードを試みました:
Sudo pip install --upgrade pip
ただし、ディストリビューションバージョンの置き換えは拒否されます。しかし、その後、私は this に出くわし、それが上記の解決策を示しました。