get-pip.py 的 curl 不起作用:语法错误

Posted

技术标签:

【中文标题】get-pip.py 的 curl 不起作用:语法错误【英文标题】:curl for get-pip.py does not work: Syntax Error 【发布时间】:2018-10-07 07:31:03 【问题描述】:

当我尝试运行时:

[root@pex appliance_ui]# curl https://bootstrap.pypa.io./get-pip.py | python

返回:

% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1603k  100 1603k    0     0  7006k      0 --:--:-- --:--:-- --:--:-- 13.2M
Traceback (most recent call last):
  File "<stdin>", line 20649, in <module>
  File "<stdin>", line 197, in main
  File "<stdin>", line 82, in bootstrap
  File "/tmp/tmpH39pcu/pip.zip/pip/_internal/__init__.py", line 42, in <module>
  File "/tmp/tmpH39pcu/pip.zip/pip/_internal/cmdoptions.py", line 16, in <module>
  File "/tmp/tmpH39pcu/pip.zip/pip/_internal/index.py", line 526
    str(c.version) for c in all_candidates,
                      ^
SyntaxError: invalid syntax

还有,

[root@pex appliance_ui]# python get-pip.py --verbose

输出:

python: can't open file 'get-pip.py': [Errno 2] No such file or directory

谁能告诉我为什么会这样? 我有 Python 2.6 和 pip 9.0.1。我的目标是尽快将整个项目升级到 python 3.5。

【问题讨论】:

【参考方案1】:

您在python 上找到的 Python 版本不支持集合推导。我可以看到尝试在 Python 2.4 中执行 str('foo') for c in [1,2,3] 时出现相同的错误,而不是在其工作的 2.7 中。

根据here 和the note in this section of the pip installation documentation 的答案,您应该在 2.6 上将此 URL 用于 get-pip.py:https://bootstrap.pypa.io/2.6/get-pip.py

您还可以看到 Python 2.7 是此处列出的最旧的受支持版本:https://pip.pypa.io/en/stable/installing/#python-and-os-compatibility

至于[Errno 2] No such file or directory,那是因为curl 将文件内容放在标准输出上,而不是放在您的文件系统上。如果你想下载文件,你可以使用wget

【讨论】:

谢谢!我可以让 curl 工作,但在我的虚拟环境中我无法运行 pip install requests pex ,给了我类似的错误。为什么会这样? 没问题。 @AnjanaShivangi 这听起来可能是另一个问题?您可能必须使用命令、正在使用或安装的版本以及遇到的错误打开一个单独的问题。这些软件包的最新版本可能具有setup.py 或其他与 Python 2.6 不兼容的代码。如果它适用于您的原始问题,也请将答案标记为已接受:)

以上是关于get-pip.py 的 curl 不起作用:语法错误的主要内容,如果未能解决你的问题,请参考以下文章

AWS安装

Python安装PIP

什么是 get-pip.py 校验和?我在哪里可以确定?

discord php curl登录失败

为啥我的 cURL 请求在 XAMPP 中不起作用?

cURL 有时不起作用并给出空结果