pip (Python包管理器)
pip(对于Python 3则别名为 pip3)是一个使用Python编写的Python软件包管理器。Python软件基金会建议使用pip来安装Python应用以及依赖。Pip连接到在线的公共Python包仓库( Python Package Index ,即 PyPi
)来实现软件包的安装和管理。也能够配置成连接本地或远程的软件包仓库,提供实现Python Enhancement Proposal (PEP) 503。
pip自身升级
在构建 Python virtualenv 之后运行pip,通常会提示pip有最新版本可以升级,此时可以升级pip:
python3 -m pip install --upgrade pip
如果pip版本过高也可降级:
pip3 install --upgrade pip==<desired version>
pip安装指定版本python包
一些软件开发采用了旧版本Python软件包环境,所以需要指定安装版本:
pip install Django==3.2.21
此外,
pip
还提供了指定版本范围的安装方法:
pip install 'stevedore>=1.3.0,<1.4.0'
# 如果已经安装过该软件则使用 --force-reinstall 降级
pip install 'stevedore>=1.3.0,<1.4.0' --force-reinstall
降级(已经安装过软件包)
如果安装了高版本软件包想要降级,采用的方法其实还是上文安装指定Python包的方法,但是需要使用
-I
(--ignore-installed
) 参数表示忽略已经安装版本,或者使用强制参数--force-reinstall
:
# 使用 -I 参数表示 --ignore-installed
pip install -Iv Django==3.2.21
# 或者使用 --force-reinstall
pip install --force-reinstall Django==3.2.21
案例:
我在 :ref:`` 遇到旧项目无法兼容Django 4.x ,所以强制Downgrade到 Django 3.2.21 (由于生产环境不通外网,采用 pip离线安装Python包 )
mkdir -p ~/onesre_venv3/whl/
# 需要特定版本的Django
pip download -d ~/onesre_venv3/whl/ Django==3.2.21
pip install --force-reinstall *.whl
可以看到实际上是先卸载旧的高版本(相同版本也是卸载),然后再重新安装指定版本(降级):
Processing ./asgiref-3.7.2-py3-none-any.whl
Processing ./Django-3.2.21-py3-none-any.whl
Processing ./pytz-2023.3.post1-py2.py3-none-any.whl
Processing ./sqlparse-0.4.4-py3-none-any.whl
Installing collected packages: pytz, sqlparse, asgiref, Django
Attempting uninstall: pytz
Found existing installation: pytz 2023.3.post1
Uninstalling pytz-2023.3.post1:
Successfully uninstalled pytz-2023.3.post1
Attempting uninstall: sqlparse
Found existing installation: sqlparse 0.4.4
Uninstalling sqlparse-0.4.4:
Successfully uninstalled sqlparse-0.4.4
Attempting uninstall: asgiref
Found existing installation: asgiref 3.7.2
Uninstalling asgiref-3.7.2:
Successfully uninstalled asgiref-3.7.2
Attempting uninstall: Django
Found existing installation: Django 4.2.5
Uninstalling Django-4.2.5:
Successfully uninstalled Django-4.2.5
Successfully installed Django-3.2.21 asgiref-3.7.2 pytz-2023.3.post1 sqlparse-0.4.4
检查安装的软件包(版本)
执行
pip list
可以看到已经安装的所有Python包:
pip list
检查所有软件包pip list
输出显示:
pip list
检查所有软件包输出案例Package Version
----------------------------- ------------
...
Django 4.2.5
django-filter 23.3
djangorestframework 3.14.0
...
使用
pip show
可以查看安装包的相信信息:
pip show
检查指定软件包详细信息pip show Django
输出案例:
pip show
检查Django的包信息Name: Django
Version: 4.2.5
Summary: A high-level Python web framework that encourages rapid development and clean, pragmatic design.
Home-page: https://www.djangoproject.com/
Author: Django Software Foundation
Author-email: foundation@djangoproject.com
License: BSD-3-Clause
Location: /home/admin/onesre_venv3/lib/python3.11/site-packages
Requires: asgiref, sqlparse
Required-by: django-filter, djangorestframework
执行 setup.py
安装
一些Python的软件包需要在系统中编译安装,例如 mysqlclient
,下载下来是tar包 mysqlclient-2.2.0.tar.gz
,解压缩以后,在包的根目录下有一个文件 setup.py
。那么该怎么安装呢? 😁
setup.py
方式安装Python包pip install .
简单到令人吃惊... 注意 不是直接运行 setup.py
( 在Python官方文档有关于 Writing the Setup Script 详细说明 )