pythonbrew 不会在命令行上安装没有输出的 python



我是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的人也提到了类似的问题,我假设那里可能存在类似的问题。

最新更新