pip 命令学习随笔
2023-01-10 本文已影响0人
还有没人用的网名吗
简介
pip是Python的包安装程序。您可以使用它从Python包索引和其他索引安装包。
pip 基础命令
1. 版本号查询
$ python -m pip --version
2. 包安装
$ python -m pip install sampleproject #普通安装
$ python -m pip install sampleproject==1.0.4 #普通安装-版本号
$ python -m pip install sampleproject>=1.0.4 #普通安装-版本号
或者
$ python -m pip install git+https://github.com/pypa/sampleproject.git@main #Github安装
或者
$ python -m pip install sampleproject-1.0-py3-none-any.whl #本地包安装
或者
$ python -m pip freeze > requirements.txt #生成requirements.txt文件
$ python -m pip install -r requirements.txt #requirements.txt文件安装
或者
$ python -m pip install sampleproject --proxy https://mirrors.aliyun.com/pypi/simple/ #镜像源安装
3.包更新
$ python -m pip install --upgrade sampleproject
4.包删除
$ python -m pip uninstall sampleproject
pip 安装
如果Python环境里没有pip包,官方提供了两种安装方式。
1. ensurepip 方式
$ python -m ensurepip --upgrade
2. get-pip 方式
获取 get-pip 脚本,下载地址: https://bootstrap.pypa.io/get-pip.py
打开命令行工具进入包含 get-pip.py 文件的文件夹,执行下面命令:
$ python get-pip.py
pip 独立使用
pip除了安装在Python环境中之外,还可以作为独立的应用程序使用。
zip包下载地址:https://bootstrap.pypa.io/pip/pip.pyz
$ python pip.pyz --help
或者
$ python -m pip.pyz --help
pip 更新
$ python -m pip install --upgrade pip
其他
1. Requirements Files 依赖文件
1.1 文件生成
$ python -m pip freeze > requirements.txt
1.2 依赖包版本号处理
如果 pkg1 和 pkg2 同时引用了 pkg3, 但引用的版本不同,则 requirements.txt 应写成:
pkg1
pkg2
pkg3>=1.0,<=2.0
1.3 依赖包版本降级处理
假设需求文件中的ProjectA需要ProjectB,但最新版本(v1.3)有错误,您可以强制pip接受早期版本,则 requirements.txt 应写成:
ProjectA
ProjectB<1.3
1.4 开发包依赖处理
如果你想依赖开发中的包,则 requirements.txt 应写成:
git+https://myvcs.com/some_dependency@sometag#egg=SomeDependency
2. Constraints Files 约束文件
约束文件仅控制安装了哪个版本的依赖包,并不参与包安装。
$ python -m pip install -c constraints.txt
3. Wheels 文件
3.1 创建 .whl 文件
$ python -m pip install wheel
$ python -m pip wheel --wheel-dir=/local/wheels -r requirements.txt
3.2 安装 .whl 文件
$ python -m pip install --no-index --find-links=/local/wheels -r requirements.txt
4. 依赖包列表
4.1 已装的依赖包
$ python -m pip list
4.2 过时的依赖包
$ python -m pip list --outdated
4.3 依赖包详细信息
$ python -m pip show sphinx
5. 依赖包搜索
$ python -m pip search "query"
6. 本地安装依赖包
$ python -m pip download --destination-directory DIR -r requirements.txt #依赖包下载
$ python -m pip wheel --wheel-dir DIR -r requirements.txt #依赖包安装方式一 (本地无缓存会联网获取)
或者
$ python -m pip install --no-index --find-links=DIR -r requirements.txt #依赖包安装方式二 (仅使用本地缓存)
7. 依赖包升级策略
--upgrade-strategy 选项控制依赖包升级策略,支持两种升级方式:
- eager:全量升级,无论新版本符不符合父包都升级;
- only-if-needed:按需升级,仅当依赖包版本不满足当前父包时升级;
$ pip install --upgrade SomePackage --upgrade-strategy=eager
例:SomePackage 依赖于 SomeDependency,并且都已安装但不是最新版本,则
$ pip install SomePackage #不会升级现有的 SomePackage 和 SomeDependency
$ pip install --upgrade SomePackage #会升级 SomePackage 但不会升级 SomeDependency (除非版本不匹配)
$ pip install --upgrade SomePackage --upgrade-strategy=eager #SomePackage 和 SomeDependency 都会升级
8. 指定用户安装
$ python -m pip install --user SomePackage
注意事项
- 当全局包与用户包存在冲突时,此安装将被忽略。
- 当全局包满足安装要求时,此安装将被忽略。
- 用户包不会安装在 --no-site-packages 选项的虚拟环境中。
- 当用户包与具有 --system-site-packages 选项的虚拟环境有版本冲突时,则取消安装。
9. pip 在程序中的使用
import sys
import subprocess
subprocess.check_call([sys.executable, '-m', 'pip', 'install', 'my_package'])
类似推荐:packaging、setuptools、distlib