在使用 box bento/centos-7 的全新 Vagrant VM 上,以下命令破坏了我的 pip 安装:
yum update
yum install epel-release -y
yum install python-pip -y
/usr/bin/pip2 install --upgrade pip setuptools pyOpenSSL psycopg2-binary lxml
这最后失败了
Downloading https://files.pythonhosted.org/packages/84/48/5c99d8770fd0a9eb0f82654c3294aad6d0ba9f8600638c2e2ad74f2c5d52/setuptools-52.0.0.tar.gz (2.1MB)
100% |████████████████████████████████| 2.1MB 821kB/s
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "setuptools/__init__.py", line 16, in <module>
import setuptools.version
File "setuptools/version.py", line 1, in <module>
import pkg_resources
File "pkg_resources/__init__.py", line 1367
raise SyntaxError(e) from e
^
SyntaxError: invalid syntax
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-GZrC3W/setuptools/
You are using pip version 8.1.2, however version 21.0 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
如果我随后升级 Pip,我会注意到我的 Python 损坏了。之后所有 pip 命令都以 SyntaxError
[root@bkd-openam ~]# pip install --upgrade pip
Collecting pip
Using cached https://files.pythonhosted.org/packages/9e/24/bc928987f35dd0167f21b13a1777c21b9c5917c9894cff93f1c1a6cb8f3b/pip-21.0.tar.gz
Installing collected packages: pip
Found existing installation: pip 8.1.2
Uninstalling pip-8.1.2:
Successfully uninstalled pip-8.1.2
Running setup.py install for pip ... done
Successfully installed pip-21.0
[root@bkd-openam ~]# /usr/bin/pip2 install --upgrade pip setuptools pyOpenSSL psycopg2-binary lxml
Traceback (most recent call last):
File "/usr/bin/pip2", line 9, in <module>
load_entry_point('pip==21.0', 'console_scripts', 'pip2')()
File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 378, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 2566, in load_entry_point
return ep.load()
File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 2260, in load
entry = __import__(self.module_name, globals(),globals(), ['__name__'])
File "/usr/lib/python2.7/site-packages/pip/_internal/cli/main.py", line 60
sys.stderr.write(f"ERROR: {exc}")
^
SyntaxError: invalid syntax
这是为什么?这是 Python 的已知问题吗?我该如何解决这个问题?
顺便说一句,CentOS 7 是给定的,此时我们无法升级到 CentOS 8。此外,我们正在使用 Ansible,因此我认为 Ansible 社区建议不要将 virtualenv 用于目标节点。
我们当然可以在目标节点上安装 Python 3,但并非所有 Ansible 代码都可用于 Python 3 与 CentOS 7 的组合。
我们可以使用 Pip 20 吗?我们想升级到仍然有效的 Pip 的最新版本,我认为那是 Pip 20。如何阻止升级到 Pip 21?
答案 0 :(得分:51)
您可以获得 get-pip.py 的旧版本 (2.7)
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py
在我看来,您应该创建一个 python2 virtualenv 并在其中安装您的 python2 包,以及 pip2。比如我安装cuckoo沙箱的时候是这样的:
virtualenv --python=python2 cuckoo/ # make your virtualenv folder with python2
cd cuckoo
source bin/activate
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py # get pip for python2
python2 get-pip.py # install pip in your virtualenv
pip install cuckoo # install your python2 package
希望它会有所帮助。
答案 1 :(得分:40)
这个问题与 Python 2.7 的生命周期结束以及 PIP 社区本月停止支持这一事实有关。
PIP 显示弃用通知,例如
<块引用>弃用:Python 2.7 已于 1 月 1 日结束其生命周期, 2020. 请升级您的 Python,因为 Python 2.7 不再维护。 pip 21.0 将在 2021 年 1 月放弃对 Python 2.7 的支持。 有关 pip 中 Python 2 支持的更多详细信息,请访问 https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 将取消对此功能的支持。
要解决此问题并继续使用不受支持的 Python 2.7,您不应升级到最新的 pip 版本,而应升级到 <21 版本。
pip install --upgrade "pip < 21.0"
答案 2 :(得分:35)
由于 PIP 放弃了对 Python 2.7 的支持,因此我们面临着上述问题,以下是在 Ubuntu 上实际对我有用的命令。
.tsv
<块引用>
输出:pip 20.3.4
CentOS 也可以通过更改包管理器名称来实现。
答案 3 :(得分:5)
更新:请使用以下命令在python2.7上安装pip
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py
python get-pip.py
享受吧!
答案 4 :(得分:3)
它的版本冲突问题。首先检查python --version,下面是python 2.7版的步骤
答案 5 :(得分:3)
当您尝试升级 pip 时,它已升级到版本 21,如链接中所述:Python2-support
<块引用>pip 20.3 是支持 Python 2 的最后一个 pip 版本。使用 pip 报告的仅在 Python 2.7 上发生的错误很可能会被 pip 的维护者关闭为“无法修复”问题。
所以现在你首先需要删除当前安装的 pip,你可以从 Centos 7:
yum remove python2-pip
现在我们将再次安装pip
yum install python2-pip -y
现在我们将pip升级到支持的版本
pip install --upgrade pip==20.3.4
现在 pip
命令可以正常工作
pip -V
答案 6 :(得分:2)
如果此逻辑用于(例如)不同 Python 版本的 Github Actions 矩阵,则以下 bash 片段将确定 pip 是否应在 pip 21.0 之前更新。例如,Python 3.5 不应更新超过 pip 21.0,但 Python 3.6 可以使用更新的版本。
C:\ProgramData\Microsoft\Windows\Start Menu\Programs
答案 7 :(得分:2)
这对我有帮助(Ubuntu 16.04)
总的来说,我完全删除了 pip 和 pip3,例如:
whereis pip
sudo rm -f <results from whereis pip
whereis pip3
sudo rm -f <results from whereis pip3
搜索 pip 并删除文件和目录。就我而言,它是:
sudo rm -fr ~/.local/bin/pip3.5
sudo rm -fr ~/.local/bin/pip3
sudo rm -fr ~/.local/lib/python3.5/site-packages/pip*
sudo rm -rf ~/.cache/pip/
sudo rm -rf /usr/lib/python2.7/dist-packages/pip*
sudo rm -rf /usr/lib/python3/dist-packages/pip*
然后我再次安装了 pip3:
Python 3.5
wget https://bootstrap.pypa.io/pip/3.5/get-pip.py
Python 3.6
wget https://bootstrap.pypa.io/get-pip.py
python3 get-pip.py --ignore-installed
答案 8 :(得分:0)
Ubuntu 16.04 LTS 32 位。
async componentDidMount() {
await this.getKeyForNextRequest();
await this.loadGrids();
}
getKeyForNextRequest = async () => {
const dataRequester = new DataRequester({
dataSource: `${URL}`,
requestType: "POST",
params: {
},
successCallback: response => {
console.log(response);
}
});
dataRequester.requestData();
}
loadGrids = async () => {
await this.loadGrid1ColumnDefs();
this.loadGrid1Data();
await this.loadGrid2ColumnDefs();
this.loadGrid2Data();
}
我在运行这些命令时遇到错误:
Ubuntu 16.04.7 LTS (GNU/Linux 4.4.0-209-generic i686)
<块引用>
回溯(最近一次调用最后一次):文件“/opt/certbot/bin/pip”,行 7、在 从 pip._internal.cli.main 导入主文件“/opt/certbot/lib/python3.5/site-packages/pip/_internal/cli/main.py”, 第 58 行 sys.stderr.write(f"错误:{exc}") ^ 语法错误:无效语法
$ sudo python3 -m venv /opt/certbot/
$ sudo /opt/certbot/bin/pip install --upgrade pip
$ sudo /opt/certbot/bin/pip install certbot
只是 python3
的符号链接:
python3.5
抛出另一个错误:
/usr/bin/python3 -> python3.5
<块引用>
错误:命令'['/opt/certbot/bin/python3.9'、'-Im'、'ensurepip'、 '--upgrade', '--default-pip']' 返回非零退出状态 1。
这些命令为我解决了问题:
$ sudo python3.9 -m venv /opt/certbot/
答案 9 :(得分:0)
我正在报告我的解决方案,因为它在 MacOS 上对我有用(而不是在 Linux 上,这些其他解决方案适用于 Linux)。希望这能帮助某人,以防他们在 Mac 上遇到类似问题。我正在运行 MacOS 11.4。 PIP 不知何故在我的系统上坏了。我的全局系统应该使用 Python3,但我收到错误消息:
Traceback (most recent call last):
File "/usr/local/bin/pip", line 11, in <module>
load_entry_point('pip==21.0.1', 'console_scripts', 'pip')()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 489, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 2843, in load_entry_point
return ep.load()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 2434, in load
return self.resolve()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 2440, in resolve
module = __import__(self.module_name, fromlist=['__name__'], level=0)
File "/Library/Python/2.7/site-packages/pip-21.0.1-py2.7.egg/pip/_internal/cli/main.py", line 60
sys.stderr.write(f"ERROR: {exc}")
^
SyntaxError: invalid syntax
我的解决方案正在运行:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py
现在 PIP 又可以在我的系统上运行了。
答案 10 :(得分:-2)
这些命令在 ubuntu 20.04 LTS 上为我解决了:
$ sudo apt update
$ sudo apt upgrade
$ sudo add-apt-repository universe
$ sudo apt install python2
$ curl https://bootstrap.pypa.io/2.7/get-pip.py | sudo python
$$ pip --version
从 https://linuxhint.com/install_python_pip_tool_ubuntu/ 和 https://unix.stackexchange.com/a/631283 中通过编辑第 5 个命令总结
答案 11 :(得分:-2)
在ubantu16.04上删除pip并重新安装
sudo apt-get remove --purge python-pip
sudo apt-get autoremove
rm -r /home/xxx/.local/bin/pip
rm -r /usr/local/bin/pip
sudo apt update
curl https://bootstrap.pypa.io/2.7/get-pip.py | sudo python
sudo ln /usr/local/bin/pip /home/xxx/.local/bin/pip