一个计算机技术爱好者与学习者

0%

好好学Python:Python包管理工具pip

1. pip简介

Pip is a package-management system written in Python and is used to install and manage software packages. The Python Software Foundation recommends using pip for installing Python applications and its dependencies during deployment. Pip connects to an online repository of public packages, called the Python Package Index. Pip can be configured to connect to other package repositories (local or remote), provided that they comply to Python Enhancement Proposal 503.

Most distributions of Python come with pip preinstalled. Python 2.7.9 and later (on the python2 series), and Python 3.4 and later include pip by default.

相关文档:

2. 安装pip

低版本的python没有默认安装pip,这时就需要手动安装。

方法一:

1
python -m ensurepip

方法二:

1
2
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py -i https://pypi.douban.com/simple/

3. 查看pip路径

查找默认python的pip路径

1
2
which pip
which python

查看特定python的pip路径,已知python路径为/path/to/python

1
2
ls -l /path/to/pip
/path/to/python -m pip --version

pip bin一般和python bin在相同路径。

4. pip常用命令

4.1. 安装软件包

安装最新软件包

1
pip install requests

安装指定版本的软件包

1
pip install requests==2.25.1

更多版本控制方法,参考【pip控制软件版本】一节。

安装wheel包

1
pip install xxx.whl

4.2. 指定pypi加速

1
pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple

4.3. 批量安装软件包

1、依赖的软件包,全部写入 requirements.txt 文件中,例如

1
2
pylint=2.17.0
requests==2.25.1

2、执行安装

1
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

4.4. 下载软件包

下载软件包但不安装

1
pip download requests -d "./"

4.5. 查看软件包

查看软件包

1
2
pip show requests
pip show -f requests

查看需要升级的软件包

1
pip list -o

4.6. 升级软件包

1
2
pip install --upgrade requests
pip install -U requests

4.7. 卸载软件包

1
pip uninstall requests

4.8. 查看兼容问题

1
2
pip check package_name
pip check # 检查所有包

5. pip控制软件版本

pip安装软件时,控制软件版本的符号及其含义如下:

1
2
3
4
5
6
7
8
9
==: 精确版本。如 requests==2.25.1,表示只安装 requests 的 2.25.1 版本。
!=: 不等于某个版本。如 requests!=2.25.1,表示安装的 requests 版本不能是 2.25.1。
>: 大于某个版本。如 requests>2.25.1,表示安装的 requests 版本必须大于 2.25.1。
>=: 大于等于某个版本。如 requests>=2.25.1,表示安装的 requests 版本必须大于等于 2.25.1。
<: 小于某个版本。如 requests<2.26.0,表示安装的 requests 版本必须小于 2.26.0。
<=: 小于等于某个版本。如 requests<=2.25.1,表示安装的 requests 版本必须小于等于 2.25.1。
~=: 兼容版本。如 requests~=2.25.1,表示允许的 requests 版本范围与 2.25.1 兼容,即安装的版本在 2.25.1(包含)到 2.26.0(不包含)之间。安装这个范围内可获得的最高的版本。
===: 精确匹配。如 requests===2.25.1,表示只安装与 2.25.1 完全匹配的 requests 版本。这与 == 类似,但更严格,要求版本标识符完全一致。
我们还可以使用逗号 , 来组合多个条件。例如,requests>=2.25.1,<=2.26.0 表示安装的 requests 版本必须大于等于 2.25.1 且小于等于 2.26.0。这允许你定义更精确的版本范围。

6. python软件包的依赖

Python 软件包中的依赖通常分为两种类型:必要依赖(也称为硬依赖)和可选依赖(也称为软依赖)。

必要依赖(硬依赖):
必要依赖是指一个 Python 包正常运行所必需的其他包。这些依赖通常包含在包的 setup.py 或 setup.cfg 文件中,或者在一个名为 requirements.txt 的文件中。当你使用 pip 安装一个包时,必要依赖会自动被安装。
例如,如果一个包名为 foo 的必要依赖是 bar 和 baz,那么当你运行 pip install foo 时,pip 会自动安装 foo、bar 和 baz。

可选依赖(软依赖):
可选依赖是指那些对于一个 Python 包的核心功能不是必需的,但可能对某些额外功能或特性有用的其他包。可选依赖通常在 setup.py 或 setup.cfg 文件中的 “extras_require” 部分定义。
当你使用 pip 安装一个包时,可选依赖默认不会被安装。但是,你可以通过在包名后面使用方括号([])并指定可选依赖的名称,来告诉 pip 安装某个或多个可选依赖。

例如,假设一个名为 foo 的包具有以下可选依赖:testing、docs

1
2
3
4
extras_require = {
"testing": ["pytest==7.2.2", "pytest-cov==4.0.0"],
"docs": ["sphinx"],
}

那么安装可选依赖的方法为:

1
2
3
pip install foo[testing]
pip install foo[testing,docs]
pip install foo[all]

并非所有包都定义了all可选依赖,all的定义方法为:

1
extras_require["all"] = list(set(reduce(operator.add, [requires, test_requirements, *extras_require.values()])))

7. ModuleNotFoundError处理方法

python 报错 ModuleNotFoundError: No module named ‘xxx’ ,该怎么找到module对应的package?

一般情况下,直接执行pip install安装package即可

1
pip install xxx

但是,某些情况下xxx这个module,对应的package名称并不是xxx,这时可以通过搜索引擎或者chatgpt查找xxx这个module对应的package。

module和package的对应关系,可以参考《Python基础》

  • 本文作者: 好好学习的郝
  • 原文链接: https://www.voidking.com/dev-python-pip/
  • 版权声明: 本文采用 BY-NC-SA 许可协议,转载请注明出处!源站会即时更新知识点并修正错误,欢迎访问~
  • 微信公众号同步更新,欢迎关注~