pip 安装使用详解

发布时间: 更新时间: 总字数:2192 阅读时间:5m 作者:IP:上海 网址

pip 类似 RedHat 里面的 yum,用来安装 Python 包非常方便。本节详细介绍 pip 的安装、以及使用方法。

介绍

Python pip 配置文件的存放位置和加载顺序,参考

  • 配置文件位置
  1. 全局(Global) /etc/pip.conf
  2. 用户(User) $HOME/.pip/pip.conf
  3. 虚拟环境(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 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 查看已安装的包

$ 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 使用示例

  • 安装 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

pip help 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.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
本文总阅读量 次 本站总访问量 次 本站总访客数