MK
摩柯社区 - 一个极简的技术知识社区
AI 面试

Python pip的常用命令与用法总结

2022-06-075.6k 阅读

一、pip 简介

pip 是 Python 的包管理工具,用于安装、升级和卸载 Python 包。它极大地简化了 Python 开发中获取和管理第三方库的过程。在 Python 2.7.9+ 和 Python 3.4+ 版本中,pip 已经默认安装。如果你的 Python 版本低于上述版本,可以手动安装 pip。

二、检查 pip 是否安装

在命令行中输入以下命令检查 pip 是否安装:

pip --version

如果 pip 已安装,会显示类似 pip x.x.x from /path/to/pip (python y.y) 的版本信息。

三、安装包

(一)安装最新版本包

这是 pip 最基本的功能。例如,要安装 numpy 这个常用的数学计算库,在命令行输入:

pip install numpy

pip 会从 Python Package Index(PyPI)下载 numpy 及其依赖项,并安装到 Python 环境中。

(二)安装指定版本包

有时我们需要安装特定版本的库以确保兼容性。以 requests 库为例,要安装 2.25.1 版本,命令如下:

pip install requests==2.25.1

这里的 == 用于指定版本号。还可以使用比较运算符指定版本范围:

  • >:大于指定版本,如 pip install requests>2.25.1
  • <:小于指定版本,如 pip install requests<2.25.1
  • >=:大于等于指定版本,如 pip install requests>=2.25.1
  • <=:小于等于指定版本,如 pip install requests<=2.25.1

(三)安装到指定目录

默认情况下,pip 将包安装到系统 Python 环境的 site-packages 目录。但有时我们可能想安装到自定义目录,比如在虚拟环境中或者创建独立的库目录。使用 --target 选项可以实现这一点。假设我们要将 flask 库安装到 /my/custom/directory,命令如下:

pip install flask --target=/my/custom/directory

在 Python 代码中导入这个目录下安装的包时,需要将该目录添加到系统路径中。例如:

import sys
sys.path.append('/my/custom/directory')
import flask

四、升级包

(一)升级单个包

要升级已安装的包到最新版本,可以使用 pip install --upgrade 命令。例如,升级 numpy 包:

pip install --upgrade numpy

pip 会检查 numpy 的最新版本,并将其下载和安装。

(二)升级所有包

在某些情况下,我们可能需要升级环境中所有已安装的包。虽然 pip 本身没有直接的命令来升级所有包,但可以通过一些技巧实现。首先,导出当前环境中已安装的包列表:

pip freeze > requirements.txt

这个命令会将所有已安装的包及其版本信息写入 requirements.txt 文件。然后,编辑该文件,将所有版本号相关的内容(如 == 及后面的版本号)删除,使其变成类似这样的格式:

numpy
requests
flask

最后,使用以下命令升级所有包:

pip install --upgrade -r requirements.txt

五、卸载包

使用 pip uninstall 命令可以卸载已安装的包。例如,要卸载 pandas 包,在命令行输入:

pip uninstall pandas

pip 会提示确认是否卸载,输入 y 并回车即可完成卸载。

六、查看已安装包

(一)查看所有已安装包

使用 pip list 命令可以列出当前 Python 环境中已安装的所有包及其版本信息。例如:

pip list

输出结果类似:

Package        Version
-------------- -------
numpy          1.21.2
pandas         1.3.3
requests       2.26.0

(二)查看可升级的包

要查看当前环境中有哪些包可以升级,可以使用 pip list --outdated 命令:

pip list --outdated

输出结果会显示当前已安装的包以及可升级到的最新版本:

Package    Version Latest Type
---------- ------- ------ ----
numpy      1.21.2 1.21.3 wheel
requests   2.26.0 2.27.1 wheel

七、创建和管理虚拟环境

虚拟环境允许我们在同一台机器上创建多个相互隔离的 Python 环境,每个环境可以有不同版本的 Python 以及不同的包安装情况。这在开发多个项目时非常有用,因为不同项目可能依赖不同版本的同一个库。

(一)安装虚拟环境工具

在大多数系统中,venv 模块已经包含在 Python 标准库中。如果是较旧的 Python 版本,可以使用 virtualenv 工具。可以使用以下命令安装 virtualenv

pip install virtualenv

(二)创建虚拟环境

  1. 使用 venv:假设要创建一个名为 myenv 的虚拟环境,在命令行输入:
python -m venv myenv

这会在当前目录下创建一个名为 myenv 的虚拟环境目录。 2. 使用 virtualenv:同样创建名为 myenv 的虚拟环境:

virtualenv myenv

(三)激活虚拟环境

  1. 在 Windows 上
    • 对于 venv 创建的虚拟环境
myenv\Scripts\activate
  • 对于 virtualenv 创建的虚拟环境
myenv\Scripts\activate
  1. 在 Linux 和 macOS 上
source myenv/bin/activate

激活虚拟环境后,命令行提示符会显示虚拟环境的名称,例如 (myenv) user@host:~$

(四)在虚拟环境中安装包

激活虚拟环境后,安装包的方式与在系统环境中相同。例如,在虚拟环境中安装 matplotlib

pip install matplotlib

这些包只会安装在虚拟环境的 site - packages 目录中,不会影响系统 Python 环境。

(五)退出虚拟环境

在激活虚拟环境的命令行中,输入以下命令退出虚拟环境:

deactivate

八、使用 requirements.txt 文件

requirements.txt 文件用于记录项目所依赖的包及其版本信息。这在项目部署和共享时非常有用,其他人可以通过这个文件快速安装项目所需的所有包。

(一)生成 requirements.txt 文件

使用 pip freeze > requirements.txt 命令可以将当前环境中已安装的包及其版本信息导出到 requirements.txt 文件。例如,在项目的虚拟环境中执行此命令:

pip freeze > requirements.txt

生成的 requirements.txt 文件内容类似:

numpy==1.21.2
pandas==1.3.3
requests==2.26.0

(二)从 requirements.txt 文件安装包

在新的环境中,要安装 requirements.txt 文件中列出的所有包,可以使用以下命令:

pip install -r requirements.txt

pip 会按照文件中指定的版本安装所有包。如果文件中没有指定版本号,pip 会安装最新版本。

九、pip 的配置文件

pip 可以通过配置文件进行定制化设置。配置文件的位置和名称在不同操作系统上有所不同:

  • Windows%APPDATA%\pip\pip.ini
  • Linux 和 macOS~/.pip/pip.conf

(一)配置文件示例

以下是一个简单的配置文件示例,用于设置 pip 的源为国内的镜像源(如清华镜像源),以加快下载速度:

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

还可以在配置文件中设置其他选项,如 timeout(设置下载超时时间)、trusted-host(信任的主机,用于避免 SSL 证书验证问题)等。例如:

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
timeout = 60
trusted-host = pypi.tuna.tsinghua.edu.cn

(二)临时使用配置选项

除了在配置文件中设置,也可以在命令行中临时使用配置选项。例如,要临时使用清华镜像源安装 scikit - learn 包,可以使用以下命令:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scikit-learn

这里的 -i 选项用于指定镜像源。

十、pip 的高级用法

(一)安装本地包

有时候我们有一个本地的 Python 包(通常是一个 .whl 文件或者一个包含 setup.py 的目录),需要安装到 Python 环境中。

  1. 安装 .whl 文件:假设我们有一个名为 package-1.0.0-py3-none-any.whl 的文件,在该文件所在目录的命令行中输入:
pip install package-1.0.0-py3-none-any.whl
  1. 安装包含 setup.py 的目录:如果有一个包含 setup.py 的包目录 my_package,进入该目录并执行以下命令:
pip install.

这里的 . 表示当前目录。

(二)安装 editable 模式的包

在开发 Python 包时,editable 模式非常有用。它允许我们在开发过程中对包进行修改,而无需每次重新安装。以 my_package 为例,假设它是一个包含 setup.py 的包目录,使用以下命令安装为 editable 模式:

pip install -e my_package

这样,对 my_package 目录中的代码进行修改后,在 Python 项目中导入该包时会直接使用修改后的代码。

(三)处理依赖冲突

在安装包时,可能会遇到依赖冲突的问题,即不同包对同一个依赖的版本要求不一致。pip 会尽力解决这些冲突,但有时需要我们手动干预。

  1. 查看冲突信息:当安装过程中出现依赖冲突时,pip 会在命令行输出详细的冲突信息。例如:
ERROR: Cannot install numpy 1.22.0 and numpy 1.21.2 because these package versions have conflicting dependencies.
  1. 手动解决冲突:一种方法是尝试指定兼容的版本。例如,如果 package1 需要 numpy>=1.22.0,而 package2 需要 numpy<=1.21.2,可以尝试找到一个中间版本,如 1.21.3,然后手动安装 numpy 这个版本:
pip install numpy==1.21.3
pip install package1 package2

另一种方法是查看相关包的文档,看是否有其他解决依赖冲突的建议,或者等待包的维护者更新以解决冲突。

(四)使用代理

如果在网络环境中需要通过代理访问互联网,可以在 pip 中设置代理。

  1. 临时设置代理:在命令行中使用 --proxy 选项,例如:
pip install requests --proxy=http://proxy.example.com:8080
  1. 在配置文件中设置代理:在 pip 的配置文件(如 ~/.pip/pip.conf%APPDATA%\pip\pip.ini)中添加以下内容:
[global]
proxy = http://proxy.example.com:8080

如果代理需要认证,可以使用 http://username:password@proxy.example.com:8080 的格式。

十一、pip 与不同 Python 版本

在系统中安装了多个 Python 版本时,需要注意不同版本对应的 pip。

(一)区分不同 Python 版本的 pip

在大多数系统中,不同 Python 版本对应的 pip 命令有所不同。例如,在同时安装了 Python 2 和 Python 3 的系统上,Python 2 的 pip 可能是 pip2,Python 3 的 pip 可能是 pip3。要确保使用正确版本的 pip 安装包,以匹配相应的 Python 环境。

(二)为特定 Python 版本安装包

如果明确要为某个特定 Python 版本安装包,可以使用 pythonX -m pip 的方式。例如,要为 Python 3.8 安装 scipy 包,假设 Python 3.8 的可执行文件为 python3.8,可以使用以下命令:

python3.8 -m pip install scipy

这样可以确保 scipy 安装到 Python 3.8 的环境中。

十二、pip 故障排除

在使用 pip 的过程中,可能会遇到各种问题,以下是一些常见问题及解决方法。

(一)网络问题

  1. 下载缓慢或超时:可能是网络不稳定或者 PyPI 服务器负载过高。可以尝试更换镜像源,如使用国内的清华镜像源、阿里云镜像源等。前面提到的在配置文件中设置镜像源或者临时使用 -i 选项指定镜像源都可以解决这个问题。
  2. 网络连接失败:检查网络连接是否正常,确保没有防火墙阻止 pip 访问互联网。如果在公司网络环境中,可能需要设置代理。

(二)权限问题

  1. 权限不足:在某些系统中,默认安装包需要管理员权限。如果在安装时遇到权限不足的错误,如 PermissionError,可以尝试使用管理员权限运行命令。在 Windows 上,以管理员身份运行命令提示符;在 Linux 和 macOS 上,使用 sudo 命令,例如:
sudo pip install package_name

但不建议经常使用 sudo 安装包,因为这可能会导致系统环境混乱,更好的方法是使用虚拟环境。

(三)依赖问题

  1. 找不到依赖:当安装一个包时,pip 会尝试安装其依赖项。但有时可能会出现找不到依赖的情况。这可能是因为依赖包的名称在不同源中不一致,或者依赖包在某些源中不可用。可以尝试手动安装依赖包,或者更换镜像源。
  2. 依赖冲突:前面已经提到依赖冲突的解决方法,如手动指定兼容版本或者查看包文档寻找解决方案。

(四)pip 自身问题

  1. 版本过旧:如果遇到一些奇怪的问题,可能是 pip 版本过旧。可以使用以下命令升级 pip:
pip install --upgrade pip
  1. 损坏或不完整安装:如果怀疑 pip 安装损坏,可以尝试重新安装 pip。对于不同 Python 版本,重新安装的方法略有不同。一般来说,可以先卸载现有的 pip,然后重新安装。例如,对于 Python 3:
python3 -m ensurepip --upgrade

这个命令会卸载并重新安装 pip 到 Python 3 的环境中。

通过以上对 pip 常用命令和用法的详细介绍,希望能帮助你更熟练地使用 pip 管理 Python 包,无论是在开发小型脚本还是大型项目时,都能高效地处理包的安装、升级、卸载等操作,并且能够解决在使用过程中遇到的各种问题。