结合--user与--prefix误差setup.py安装结合--user与--prefix误差se

2019-05-13 08:18发布

我试图安装Python包我最近获得访问系统。 我试图利用Python的相对较新的每用户site-packages目录 ,以及新的选项--user 。 (该选项目前无证 ,但它为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标志作为命令行选项。 我浪费了很多时间试图找出问题所在。 我记录我的回答如下,希望在不遗余力一些其他可怜的灵魂的几个小时牦牛剃须 。

Answer 1:

一个时间解决方法:

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标志。

最后,删除或重命名该文件。 安装时Python包全系统的(即没有离开这个文件存在会导致一些问题--user )作为本该用户~/.pydistutils.cfg

这个问题的原因

这似乎是两者的OpenSUSE和RedHat的问题,这导致了一个错误的virtualenv在这些平台上。

错误从一个系统级的茎的distutils配置文件 (在我的情况/usr/lib64/python2.6/distutils/distutils.cfg ),那里有这

[install]
prefix=/usr/local

基本上,这是相当于始终运行安装命令install --prefix=/usr/local 。 你必须重载使用上述技术中的一个本规范。



Answer 2:

正如在评论中指出的那样,公认的答案(由@gotgenes,谁,大概有基因)会导致意想不到的后果。

@rogeleaderr说,“需要注意的是保持这个文件中像这样会让Python的认为/是你的根Python库目录,从而导致混乱的问题,如果您尝试安装其他新的软件包。”

而不是写一个新的配置文件,如@gotgenes建议,更好的选择是添加--prefix= (无文本等号的右边)作为命令行上的选项,如

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


Answer 3:

发布救别人的时候,因为没有可用的答案为我工作...

在某些环境中,使用--target-t )开关仍然会打同样的错误。 在我在Linux上的两种口味测试中,我使用时遇到了同样的问题--prefix=参数。

码:

PYTHONUSERBASE=/tmp/ pip install --user --force-reinstall $PACKAGE

说明:我的解决办法,这似乎在许多环境(MacOS的,亚马逊的Linux,Debian的)工作是将设置PYTHONUSERBASE环境变量设置为临时位置。 --force-reinstall用于触发,即使已经安装了包本地安装。

这将导致该模块中被编译/安装(取决于操作系统和Python版本)来: /tmp/lib/python2.7/site-packages/*



文章来源: Combine --user with --prefix error with setup.py install