我是python,pythonbrew和ubuntu的新手。 我需要python 2.6,目前在我的ubuntu精确系统上有2.7。 在线搜索显示我不应该尝试卸载 2.7,因为这几乎会破坏操作系统,而是获得管理多个 python 安装的 pythonbrew。
我尝试安装 pythonbrew,但 curl install ( curl -kL https://raw.githubusercontent.com/utahta/pythonbrew/master/pythonbrew-install | bash
( 对我不起作用:它没有从 env 中获取我的 http 代理,然后没有将其传递给安装脚本,一旦我在命令行上提供它。 我手动下载了pythonbrew位,然后使用python setup.py 安装来安装它。 我以 root 身份做了它,它似乎可以工作(安装在/root/.pythonbrew 下,这不是最好的(,但是我不能在系统上以其他用户的身份使用它(权限问题(。 经过更多的阅读,我以root用户的身份正确执行了脚本,并将pythonbrew安装到/usr/local/pythonbrew(yay(。
现在,当我以 root 或非 root 用户身份执行以下内容时,它会等待一段时间,然后提示返回,没有错误或任何其他信息(--verbose 没有区别(:
root@xxx:~/.pythonbrew/scripts/pythonbrew# pythonbrew install 2.6
root@xxx:~/.pythonbrew/scripts/pythonbrew#
有什么想法吗? 我猜这又与代理有关,但我对 python 完全陌生,所以欢迎任何指针。
遵循"哪个pythonbrew"并做一些猜测,解决了我的问题: 我更改了/usr/local/pythonbrew/scripts/pythonbrew 下的 curl.py 文件,将代理设置添加到读取、读取标头和获取函数中,如下所示:
修改前:
p = Popen('curl -skL "%s"' % url, stdout=PIPE, shell=True)
修改后:
p = Popen('curl -x http://<proxy host>:<proxy port> -skL "%s"' % url, stdout=PIPE, shell=True)
我不确定为什么没有代理设置就没有输出,但现在安装可以工作了!
我今天在使用pythonbrew安装py2.7.14时也遇到了这个问题。
它静默安装失败的原因是当它从 python 服务器(py2.7.14 的 src(获取标头时,它会检查返回状态是否成功。它实现了 HTTP/1.1 方法检查(仅(,其中成功返回状态为 200 OK
。
但是,python服务器使用HTTP/2并且成功返回代码的形式为200
,没有尾随OK
。
因此,为了修复它,我在下面添加了 2 行代码,然后是 /opt/.pythonbrew/scripts/pythonbrew/curl.py
中的 2 行,例程readheader()
。
if re.match('^HTTP.*? 200 OK$', line):
break
在上面的代码下面添加了此代码:
elif re.match('^HTTP.*? 200$', line):
break
我不想更改pythonbrew的代码,因此添加了elif
。
这行得通。
我注意到其他几个使用pyenv
的人也提到了类似的问题,我假设那里可能存在类似的问题。