got*_*nes 95 python installation distutils
我试图安装Python包,这是我最近获得的一个系统.我试图利用Python相对较新的每用户site-packages目录和新选项--user.(该选项目前没有记录,但它适用于Python 2.6+;您可以通过运行来查看帮助python setup.py install --help.)
当我试着跑步时
python setup.py install --user
Run Code Online (Sandbox Code Playgroud)
在我下载的任何软件包上,我总是遇到以下错误:
error: can't combine user with with prefix/exec_prefix/home or install_(plat)base
Run Code Online (Sandbox Code Playgroud)
错误是因为非常令人困惑,因为你可以看到,我不提供--prefix,--exec-prefix,--install-base,或--install-platbase标志作为命令行选项.我浪费了很多时间试图找出问题所在.我在下面记录了我的答案,希望能让其他一些可怜的灵魂在几个小时的牦牛皮上刮胡子.
got*_*nes 149
pip install --user --install-option="--prefix=" <package_name>
Run Code Online (Sandbox Code Playgroud)
要么
python setup.py install --user --prefix=
Run Code Online (Sandbox Code Playgroud)
请注意,之后没有文本(甚至没有空格)=.
千万不能忘记的--user标志.
~/.pydistutils.cfg使用以下内容创建(或等效于您的OS /平台):
[install]
prefix=
Run Code Online (Sandbox Code Playgroud)
请注意,之后没有文本(甚至没有空格)=.
然后运行必要的pip install --user或python setup.py install --user命令.千万不能忘记的--user标志.
最后,删除或重命名此文件.保留此文件将导致在系统范围内(即,没有--user)安装Python软件包时会出现问题~/.pydistutils.cfg.
这似乎是OpenSUSE和RedHat的问题,这导致了这些平台上virtualenv的错误.
该错误源于系统级distutils配置文件(在我的情况下/usr/lib64/python2.6/distutils/distutils.cfg)
[install]
prefix=/usr/local
Run Code Online (Sandbox Code Playgroud)
基本上,这相当于始终运行install命令install --prefix=/usr/local.您必须使用上述技术之一覆盖此规范.
小智 7
发布以节省其他人的时间,因为没有可用的答案对我有用...
在某些环境中,使用--target( -t) 开关仍会遇到相同的错误。在我对两种 linux 版本的测试中,我在使用该--prefix=参数时遇到了同样的问题。
代码:
PYTHONUSERBASE=/tmp/ pip install --user --force-reinstall $PACKAGE
Run Code Online (Sandbox Code Playgroud)
说明:我的解决方法(似乎适用于许多环境(MacOS、Amazon Linux、Debian))是将PYTHONUSERBASE环境变量设置为临时位置。 --force-reinstall即使包已经安装,也用于触发本地安装。
这将导致模块被编译/安装(取决于操作系统和 Python 版本): /tmp/lib/python2.7/site-packages/*
正如评论中所指出的那样,接受的答案(@gotgenes,大概拥有基因)可能导致意想不到的后果。
@rogeleaderr说:“请注意,使该文件保持这种状态会使Python认为/是您的python库根目录,如果尝试安装其他新软件包,则会导致令人困惑的问题。”
与其按照@gotgenes的建议写一个新的配置文件,一个更好的选择是--prefix= 在命令行上添加(等号右边没有文本)作为选项,如
$ python setup.py install --user --prefix=
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43056 次 |
| 最近记录: |