操作系统: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。
到目前为止我已经尝试过:
- 卸载 Python 3.5 的 PIP 并再次检查版本。
- 卸载 Python 2.7 的 PIP 并再次检查版本。
- 卸载 Python v3.5(
apt remove --purge
)并再次检查版本。 - 卸载 Pyton v2.7 并再次检查版本。
- 卸载 Python v3.4 并再次检查版本。
- 重新安装 Pyhton v3.4 并再次检查版本。
答案1
根据phd 的帖子,根本原因是默认安装的 PIP 版本与旧版 Python 3.4 不兼容。关键线索是f""
仅受 Python v3.6+ 支持。
因此我卸载了 PIP 并重新安装了 PIP 19.1.1,如下所示:
卸载发行版存储库提供的不兼容的 PIP:
sudo apt remove --purge python3-pip
下载
get-pip.py
与我的 Python 3.4 版本兼容的版本:curl -O https://bootstrap.pypa.io/pip/3.4/get-pip.py
安装 PIP(在我的情况下是
sudo
全局安装并将-E
代理设置应用于sudo
会话):sudo -E python3 get-pip.py
可选:升级 PIP 以确保它是最新可用版本:
sudo -E python3 -m pip install --upgrade "pip < 19.2"
检查版本:
python3 -m pip --version
输出:
pip 19.1.1 from /usr/local/lib/python3.4/dist-packages/pip (python 3.4)