回答问题

我正在尝试安装 Python 包,这是我最近获得访问权限的系统。我试图利用 Python 相对较新的每个用户站点包目录和新选项--user。 (该选项是current undocumented,但是它存在于 Python 2.6+;您可以通过运行python setup.py install --help查看帮助。)

当我尝试跑步时

python setup.py install --user

在我下载的任何包上,我总是收到以下错误:

error: can't combine user with with prefix/exec_prefix/home or install_(plat)base

该错误非常令人困惑,因为如您所见,我没有提供--prefix--exec-prefix--install-base--install-platbase标志作为命令行选项。我浪费了很多时间试图找出问题所在。我在下面记录了我的答案,希望能让其他一些可怜的灵魂节省几个小时的牦牛剃须。

Answers

一次性解决方法:

pip install --user --install-option="--prefix=" <package_name>

或者

python setup.py install --user --prefix=

请注意,=之后没有文本(甚至没有空格)。

不要忘记--user标志。

安装多个包:

使用以下内容创建~/.pydistutils.cfg(或您的操作系统/平台的等效项):

[install]
prefix=

请注意,=之后没有文本(甚至没有空格)。

然后运行必要的pip install --userpython setup.py install --user命令。不要忘记--user标志。

最后,删除或重命名此文件。当这个用户使用这个~/.pydistutils.cfg安装 Python 包系统范围(即没有--user)时,保留这个文件将导致问题。

这个问题的原因

这似乎是 OpenSUSE 和 RedHat 的问题,导致在这些平台上的 virtualenv中出现错误。

该错误源于系统级distutils配置文件(在我的情况下为/usr/lib64/python2.6/distutils/distutils.cfg),其中有这个

[install]
prefix=/usr/local

基本上,这相当于始终以install --prefix=/usr/local运行安装命令。您必须使用上述技术之一覆盖此规范。

Logo

Python社区为您提供最前沿的新闻资讯和知识内容

更多推荐