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

时间:2013-09-23 21:37:10

标签: pythonbrew

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

我尝试安装pythonbrew,但curl安装(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完全不熟悉所以任何指针都是受欢迎的。

2 个答案:

答案 0 :(得分:0)

在“哪个pythonbrew”之后做了一些猜测以下解决了我的问题:我更改了/ usr / local / pythonbrew / scripts / pythonbrew下的curl.py文件,将代理设置添加到read,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)

我不确定为什么没有代理设置没有输出,但现在安装有效!

答案 1 :(得分: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的{​​{1}}中的以下两行下面添加了两行代码。

readheader()

在上面的代码下面添加了此代码:

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

我不想更改pythonbrew的代码,因此添加了elif re.match('^HTTP.*? 200$', line): break

这有效。

我注意到其他一些使用elif的人也提到了类似的问题,我想那里可能也存在类似的问题。