将 --user 与 --prefix 错误与 setup.py install 结合使用
回答问题
我正在尝试安装 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 --user或python 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运行安装命令。您必须使用上述技术之一覆盖此规范。
更多推荐

所有评论(0)