pip 类似 RedHat 里面的 yum,用来安装 Python 包非常方便。本节详细介绍 pip 的安装、以及使用方法。
介绍
Python pip 配置文件的存放位置和加载顺序,参考
- 配置文件位置
- 全局(Global)
/etc/pip.conf - 用户(User)
$HOME/.pip/pip.conf - 虚拟环境(Site)
$VIRTUAL_ENV/pip.conf
- 加载顺序
PIP_CONFIG_FILE > Global > User > Site- 配置
# 当前配置,分别表示全局、用户、虚拟环境,下同
pip3 config --global list
pip3 config --user list
pip3 config --site list- 国内源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip config set install.trusted-host pypi.tuna.tsinghua.edu.cn
pip config set global.index-url http://mirrors.aliyun.com/pypi/simple
pip config set install.trusted-host mirrors.aliyun.com
pip config set global.timeout 10
pip config list安装部署
Yum 安装
yum -y install python-pip快速安装
$ wget https://bootstrap.pypa.io/get-pip.py
$ python get-pip.py源码安装
下载源码:
wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb" --no-check-certificate安装:
# tar -xzvf pip-1.5.4.tar.gz
# cd pip-1.5.4
# python setup.py installpip 使用
# pip --help
Usage:
pip <command> [options]
Commands:
install 安装包.
uninstall 卸载包.
freeze 按着一定格式输出已安装包列表
list 列出已安装包.
show 显示包详细信息.
search 搜索包,类似yum里的search.
wheel Build wheels from your requirements.
zip 不推荐. Zip individual packages.
unzip 不推荐. Unzip individual packages.
bundle 不推荐. Create pybundles.
help 当前帮助.
General Options:
-h, --help 显示帮助.
-v, --verbose 更多的输出,最多可以使用3次
-V, --version 现实版本信息然后退出.
-q, --quiet 最少的输出.
--log-file <path> 覆盖的方式记录verbose错误日志,默认文件:/root/.pip/pip.log
--log <path> 不覆盖记录verbose输出的日志.
--proxy <proxy> Specify a proxy in the form [user:passwd@]proxy.server:port.
--timeout <sec> 连接超时时间 (默认15秒).
--exists-action <action> Default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup.
--cert <path> 证书.pip 安装包
# pip install SomePackage
[...]
Successfully installed SomePackagepip install -e .-e 为 editable,即修改本地文件,调用的模块以最新文件为准--trusted-hostenvironment variable: PIP_TRUSTED_HOST,参考
pip 查看已安装的包
$ pip show SomePackage
# pip show --files SomePackage
Name: SomePackage
Version: 1.0
Location: /my/env/lib/pythonx.x/site-packages
Files:
../somepackage/__init__.py
[...]pip 检查哪些包需要更新
# pip list --outdated
SomePackage (Current: 1.0 Latest: 2.0)pip 升级包
# pip install --upgrade SomePackage
[...]
Found existing installation: SomePackage 1.0
Uninstalling SomePackage:
Successfully uninstalled SomePackage
Running setup.py install for SomePackage
Successfully installed SomePackagepip 指定目录安装
pip install --target ./package SomePackagepip 指定 git 安装
pip install git+http://127.0.0.1/xxx.git --userpip 卸载包
$ pip uninstall SomePackage
Uninstalling SomePackage:
/my/env/lib/pythonx.x/site-packages/somepackage
Proceed (y/n)? y
Successfully uninstalled SomePackage下载包
旧版 pip 下载方式:
pip install --download /pip -r requirements.txtpip 9, 10 版本的下载方式:
pip download -d /pip -r requirements.txtpip 使用示例
- 安装 python redis
# pip install redis- 卸载 python redis
# pip uninstall redis
Uninstalling redis:
/usr/lib/python2.6/site-packages/redis-2.9.1-py2.6.egg-info
.....省略一些内容....
Proceed (y/n)? y
Successfully uninstalled redis清理缓存
pip cache purge
# 或
pip --no-cache-dir其他说明
pip install
constraint.txt 格式
MySQL-python===1.2.5;python_version=='2.7'
MarkupSafe===1.0
pypowervm===1.1.6
doc8===0.8.0
pymongo===3.5.1
sqlparse===0.2.3使用:
pip install -c constraint.txtrequirement.txt 格式
版本依赖文件
Parsley # MIT
six>=1.9.0 # MIT
packaging>=16.5 # Apache-2.0
requests>=2.14.2 # Apache-2.0
PyYAML>=3.10 # MIT
backports.zoneinfo==0.2.1;python_version<"3.9" # 指定python版本,否则不安装使用:
pip install -r requirement.txtpip –no-cache-dir
pip --no-cache-dir不缓存 pip,默认的缓存目录~/.cache/pip,修改默认的缓存目录(任选一个):export PIP_CACHE_DIR="<some-dir>"pip config set global.no-cache-dir false- pip.conf 配置:
[global]
no-cache-dir = false- 缓存管理命令:
- 删除所有缓存
pip cache purge - 查看缓存:
pip cache list
- 删除所有缓存
error: externally-managed-environment
部分系统使用 pip install 时出错:
$ sudo pip3 install xxx
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try 'pacman -S
python-xyz', where xyz is the package you are trying to
install.
If you wish to install a non-Arch-packaged Python package,
create a virtual environment using 'python -m venv path/to/venv'.
Then use path/to/venv/bin/python and path/to/venv/bin/pip.
If you wish to install a non-Arch packaged Python application,
it may be easiest to use 'pipx install xyz', which will manage a
virtual environment for you. Make sure you have python-pipx
installed via pacman.
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.- 原因
- Manjaro 22、Ubuntu 23.04、Fedora 38 以及其他的最新发行版中,正在使用 Python 包来实现此增强功能
- 用来避免操作系统包管理器 (如 pacman、yum、apt) 和 pip 等特定于 Python 的包管理工具之间的冲突
- Manjaro 22、Ubuntu 23.04、Fedora 38 以及其他的最新发行版中,正在使用 Python 包来实现此增强功能
- 解决方式
# 方法一
sudo mv /usr/lib/python3.x/EXTERNALLY-MANAGED{,.bak}
# 方法二:使用 venv 隔离环境
# 使用 pipx 安装 cli
pipx install <package-name>
# 方法三:使用 apt 等包管理工具安装 python3-xxx