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
# 配置
pip3 config --global set global.index-url https://mirrors.aliyun.com/pypi/simple/
pip3 config --global set install.trusted-host mirrors.aliyun.com
安装部署
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 install
pip 使用
# 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 SomePackage
pip install -e .
-e 为 editable,即修改本地文件,调用的模块以最新文件为准
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 SomePackage
pip 指定目录安装
pip install --target ./package SomePackage
pip 指定 git 安装
pip install git+http://127.0.0.1/xxx.git --user
pip 卸载包
$ 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.txt
pip 9, 10 版本的下载方式:
pip download -d /pip -r requirements.txt
pip 使用示例
# pip install 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 install
[root@xiexianbin_cn ~]# pip help install
Usage:
pip install [options] <requirement specifier> [package-index-options] ...
pip install [options] -r <requirements file> [package-index-options] ...
pip install [options] [-e] <vcs project url> ...
pip install [options] [-e] <local project path> ...
pip install [options] <archive url/path> ...
Description:
Install packages from:
- PyPI (and other indexes) using requirement specifiers.
- VCS project urls.
- Local project directories.
- Local or remote source archives.
pip also supports installing from "requirements files", which provide
an easy way to specify a whole environment to be installed.
Install Options:
-c, --constraint <file> Constrain versions using the given constraints file. This option can be used multiple times.
-e, --editable <path/url> Install a project in editable mode (i.e. setuptools "develop mode") from a local project path or a VCS url.
-r, --requirement <file> Install from the given requirements file. This option can be used multiple times.
-b, --build <dir> Directory to unpack packages into and build in.
-t, --target <dir> Install packages into <dir>. By default this will not replace existing files/folders in <dir>. Use
--upgrade to replace existing packages in <dir> with new versions.
-d, --download <dir> Download packages into <dir> instead of installing them, regardless of what's already installed.
--src <dir> Directory to check out editable projects into. The default in a virtualenv is "<venv path>/src". The
default for global installs is "<current dir>/src".
-U, --upgrade Upgrade all specified packages to the newest available version. The handling of dependencies depends on the
upgrade-strategy used.
--upgrade-strategy <upgrade_strategy>
Determines how dependency upgrading should be handled. "eager" - dependencies are upgraded regardless of
whether the currently installed version satisfies the requirements of the upgraded package(s). "only-if-
needed" - are upgraded only when they do not satisfy the requirements of the upgraded package(s).
--force-reinstall When upgrading, reinstall all packages even if they are already up-to-date.
-I, --ignore-installed Ignore the installed packages (reinstalling instead).
--ignore-requires-python Ignore the Requires-Python information.
--no-deps Don't install package dependencies.
--install-option <options> Extra arguments to be supplied to the setup.py install command (use like --install-option="--install-
scripts=/usr/local/bin"). Use multiple --install-option options to pass multiple options to setup.py
install. If you are using an option with a directory path, be sure to use absolute path.
--global-option <options> Extra global options to be supplied to the setup.py call before the install command.
--user Install to the Python user install directory for your platform. Typically ~/.local/, or %APPDATA%\Python on
Windows. (See the Python documentation for site.USER_BASE for full details.)
--egg Install packages as eggs, not 'flat', like pip normally does. This option is not about installing *from*
eggs. (WARNING: Because this option overrides pip's normal install logic, requirements files may not behave
as expected.)
--root <dir> Install everything relative to this alternate root directory.
--prefix <dir> Installation prefix where lib, bin and other top-level folders are placed
--compile Compile py files to pyc
--no-compile Do not compile py files to pyc
--no-use-wheel Do not Find and prefer wheel archives when searching indexes and find-links locations. DEPRECATED in favour
of --no-binary.
--no-binary <format_control>
Do not use binary packages. Can be supplied multiple times, and each time adds to the existing value.
Accepts either :all: to disable all binary packages, :none: to empty the set, or one or more package names
with commas between them. Note that some packages are tricky to compile and may fail to install when this
option is used on them.
--only-binary <format_control>
Do not use source packages. Can be supplied multiple times, and each time adds to the existing value.
Accepts either :all: to disable all source packages, :none: to empty the set, or one or more package names
with commas between them. Packages without binary distributions will fail to install when this option is
used on them.
--pre Include pre-release and development versions. By default, pip only finds stable versions.
--no-clean Don't clean up build directories.
--require-hashes Require a hash to check each requirement against, for repeatable installs. This option is implied when any
package in a requirements file has a --hash option.
Package Index Options (including deprecated options):
-i, --index-url <url> Base URL of Python Package Index (default http://pypi.doubanio.com/simple). This should point to a
repository compliant with PEP 503 (the simple repository API) or a local directory laid out in the same
format.
--extra-index-url <url> Extra URLs of package indexes to use in addition to --index-url. Should follow the same rules as --index-
url.
--no-index Ignore package index (only looking at --find-links URLs instead).
-f, --find-links <url> If a url or path to an html file, then parse for links to archives. If a local path or file:// url that's a
directory, then look for archives in the directory listing.
--process-dependency-links Enable the processing of dependency links.
General Options:
-h, --help Show help.
--isolated Run pip in an isolated mode, ignoring environment variables and user configuration.
-v, --verbose Give more output. Option is additive, and can be used up to 3 times.
-V, --version Show version and exit.
-q, --quiet Give less output. Option is additive, and can be used up to 3 times (corresponding to WARNING, ERROR, and
CRITICAL logging levels).
--log <path> Path to a verbose appending log.
--proxy <proxy> Specify a proxy in the form [user:passwd@]proxy.server:port.
--retries <retries> Maximum number of retries each connection should attempt (default 5 times).
--timeout <sec> Set the socket timeout (default 1200.0 seconds).
--exists-action <action> Default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup, (a)bort.
--trusted-host <hostname> Mark this host as trusted, even though it does not have valid or any HTTPS.
--cert <path> Path to alternate CA bundle.
--client-cert <path> Path to SSL client certificate, a single file containing the private key and the certificate in PEM format.
--cache-dir <dir> Store the cache data in <dir>.
--no-cache-dir Disable the cache.
--disable-pip-version-check
Don't periodically check PyPI to determine whether a new version of pip is available for download. Implied
with --no-index.
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.txt
requirement.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.txt
pip –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 的包管理工具之间的冲突
- 解决方式
# 方法一
sudo mv /usr/lib/python3.x/EXTERNALLY-MANAGED{,.bak}
# 方法二:使用 venv 隔离环境
# 使用 pipx 安装 cli
pipx install <package-name>
# 方法三:使用 apt 等包管理工具安装 python3-xxx