为什么 pip -t 在 Ubuntu 15.04 上不起作用?

为什么 pip -t 在 Ubuntu 15.04 上不起作用?

我在 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

我遇到了同样的问题,我注意到默认发行版中的 pip 是旧版本 1.5.6,当前发布的版本是 7.1.0。由于很难追踪问题,我到处寻找“大海捞针”,我将其删除并按照以下建议手动安装:

此评论:https://github.com/pypa/pip/issues/1093#issuecomment-103127883 在此堆栈中引用: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最新版本的命令成功了。

答案2

我认为@Tiberiu C 的回答一针见血。我不敢相信pip发行版中的这个漏洞竟然这么老了。但是,解决该漏洞的步骤似乎需要做很多工作,所以我建议,如果您easy_install的系统上也存在漏洞,那么您可以使用以下代码来实现他的解决方案:

sudo easy_install -U pip

起初我尝试使用以下方法进行自我升级pip

sudo pip install --upgrade pip

但是,它会拒绝替换发行版。但后来我遇到了这为我指出了上述解决方案。

相关内容