0

我对 python、pythonbrew 和 ubuntu 都是新手。我需要 python 2.6,目前在我的 ubuntu 精确系统上有 2.7。在线搜索显示我不应该尝试卸载 2.7,因为这几乎会破坏操作系统,而是使用 pythonbrew 来管理多个 python 安装。

我尝试安装 pythonbrew,但 curl install ( curl -kL https://raw.githubusercontent.com/utahta/pythonbrew/master/pythonbrew-install | bash) 对我不起作用:它没有从 env 中获取我的 http 代理,然后没有将它传递给安装脚本,一旦我在命令行上提供了它。我手动下载了 pythonbrew 位,然后使用 python setup.py install 安装它。我以 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 完全陌生,所以欢迎任何指针。

4

2 回答 2

0

遵循“which pythonbrew”并做一些猜测,解决了我的问题:我更改了 /usr/local/pythonbrew/scripts/pythonbrew 下的 curl.py 文件,添加代理设置以读取、readheader 和 fetch 函数,如下所示:

修改前:

 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)

我不知道为什么没有代理设置就没有输出,但现在安装工作了!

于 2013-09-23T21:46:16.653 回答
0

我今天在使用 pythonbrew 安装 py2.7.14 时也遇到了这个问题。

它静默安装失败的原因是当它从 python 服务器(py2.7.14 的 src)获取标头时,它会检查成功的返回状态。它实现了 HTTP/1.1 方法检查(仅)成功返回状态为200 OK.

但是,python 服务器使用 HTTP/2 并且成功返回码是格式200,没有尾随OK.

/opt/.pythonbrew/scripts/pythonbrew/curl.py因此,为了修复它,我在,routine中的 2 行之后添加了 2 行代码readheader()

if re.match('^HTTP.*? 200 OK$', line):
    break

在上面的代码下面添加了这段代码:

elif re.match('^HTTP.*? 200$', line):
    break

我不想更改 pythonbrew 的代码,因此添加了elif.

这行得通。

我注意到其他几个使用的人pyenv也提到了类似的问题,我假设那里可能存在类似的问题。

于 2019-09-04T18:10:30.440 回答