pip --version 安装后返回 SyntaxError(无效语法)

pip --version 安装后返回 SyntaxError(无效语法)

操作系统:Debian 8

Python:v3.4.2(卸载了 v2.7 和 v3.5,以减少可能的根本原因)

我根据文档为 Python 3 安装了 pip:

sudo apt install python3-venv python3-pip

随后,检查版本会导致 SyntaxError:

$ python3 -m pip --version
Traceback (most recent call last):
  File "/usr/lib/python3.4/runpy.py", line 170, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib/python3.4/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/usr/local/lib/python3.4/dist-packages/pip/__main__.py", line 21, in <module>
    from pip._internal.cli.main import main as _main
  File "/usr/local/lib/python3.4/dist-packages/pip/_internal/cli/main.py", line 60
    sys.stderr.write(f"ERROR: {exc}")
                                   ^
SyntaxError: invalid syntax

请注意 Python 版本 3.4 的路径,而以下检查指向版本 3.5:

$ pip --version
Traceback (most recent call last):
  File "/usr/local/bin/pip", line 7, in <module>
    from pip._internal.cli.main import main
  File "/usr/local/lib/python3.5/site-packages/pip/_internal/cli/main.py", line 60
    sys.stderr.write(f"ERROR: {exc}")
                                   ^
SyntaxError: invalid syntax

但是,which pip 指向另一条路径:

$ which pip
/usr/local/bin/pip

出了什么问题?我该如何修复 PIP?

我需要它来安装工具 elastalert。

到目前为止我已经尝试过:

  1. 卸载 Python 3.5 的 PIP 并再次检查版本。
  2. 卸载 Python 2.7 的 PIP 并再次检查版本。
  3. 卸载 Python v3.5(apt remove --purge)并再次检查版本。
  4. 卸载 Pyton v2.7 并再次检查版本。
  5. 卸载 Python v3.4 并再次检查版本。
  6. 重新安装 Pyhton v3.4 并再次检查版本。

答案1

根据phd 的帖子,根本原因是默认安装的 PIP 版本与旧版 Python 3.4 不兼容。关键线索是f""仅受 Python v3.6+ 支持。

因此我卸载了 PIP 并重新安装了 PIP 19.1.1,如下所示:

  1. 卸载发行版存储库提供的不兼容的 PIP:

    sudo apt remove --purge python3-pip
    
  2. 下载get-pip.py与我的 Python 3.4 版本兼容的版本:

    curl -O https://bootstrap.pypa.io/pip/3.4/get-pip.py
    
  3. 安装 PIP(在我的情况下是sudo全局安装并将-E代理设置应用于sudo会话):

    sudo -E python3 get-pip.py
    
  4. 可选:升级 PIP 以确保它是最新可用版本:

    sudo -E python3 -m pip install --upgrade "pip < 19.2"
    
  5. 检查版本:

    python3 -m pip --version
    

    输出:

    pip 19.1.1 from /usr/local/lib/python3.4/dist-packages/pip (python 3.4)
    

相关内容