在使用 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
Run Code Online (Sandbox Code Playgroud)
这最终失败了
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.
Run Code Online (Sandbox Code Playgroud)
如果我然后升级 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
Run Code Online (Sandbox Code Playgroud)
为什么是这样?这是 Python 的已知问题吗?我该如何解决?
顺便说一句,CentOS 7 是给定的,此时我们无法升级到 CentOS 8。此外,我们正在使用 Ansible,因此我认为 Ansible 社区建议不要将 virtualenv 用于目标节点。
我们当然可以在目标节点上安装 Python 3,但并非所有 Ansible 代码都可用于将 Python 3 与 CentOS 7 组合。
我们可以使用 Pip 20 吗?我们想升级到仍然有效的 Pip 的最新版本,我认为那是 Pip 20。如何阻止升级到 Pip 21?
bas*_*ker 54
您可以获得 get-pip.py 的旧版本 (2.7)
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py
Run Code Online (Sandbox Code Playgroud)
在我看来,你应该创建一个 python2 virtualenv 并在其中安装你的 python2 包,以及 pip2。比如我安装布谷鸟沙箱的时候,我是这样操作的:
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
Run Code Online (Sandbox Code Playgroud)
希望它会有所帮助。
onk*_*ows 41
这个问题与 Python 2.7 的生命周期结束以及 PIP 社区本月停止支持这一事实有关。
PIP 显示弃用通知,例如
弃用:Python 2.7 的生命周期已于 2020 年 1 月 1 日结束。请升级您的 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"
Run Code Online (Sandbox Code Playgroud)
小智 37
由于 PIP 放弃了对 Python 2.7 的支持,因此我们面临着上述问题,以下是在 Ubuntu 上实际对我有用的命令。
sudo apt-get remove --purge python-pip
sudo apt-get autoremove
sudo rm -f /usr/local/bin/pip
sudo easy_install pip==20.3.4
pip --version
Run Code Online (Sandbox Code Playgroud)
输出:pip 20.3.4
CentOS 也可以通过更改包管理器名称来实现。
这对我有帮助(Ubuntu 16.04)
一般来说,我完全删除了 pip 和 pip3,例如:
whereis pip
sudo rm -f <results from whereis pip
whereis pip3
sudo rm -f <results from whereis pip3
Run Code Online (Sandbox Code Playgroud)
搜索 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*
Run Code Online (Sandbox Code Playgroud)
然后我再次安装了pip3:
Python 3.5
wget https://bootstrap.pypa.io/pip/3.5/get-pip.py
Run Code Online (Sandbox Code Playgroud)
Python 3.6
wget https://bootstrap.pypa.io/get-pip.py
Run Code Online (Sandbox Code Playgroud)
python3 get-pip.py --ignore-installed
Run Code Online (Sandbox Code Playgroud)
更新:请使用以下命令在python2.7上安装pip
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py
python get-pip.py
Run Code Online (Sandbox Code Playgroud)
好好享受!
归档时间: |
|
查看次数: |
103557 次 |
最近记录: |