使用 pip 和 venv 在虚拟环境中安装软件包

大家好,我是前端开发,最进在使用Python开发。这里记录一下Python虚拟环境和Pip的使用指南.

本指南原文Install packages in a virtual environment using pip and venv

本指南讨论如何使用标准库的虚拟环境工具venv创建和激活虚拟环境并安装包。

  • 创建并激活虚拟环境
  • 使用pip命令将软件包安装到虚拟环境中
  • 使用并创建requirements.txt

本指南适用于受支持的 Python 版本,目前为 3.8 及更高版本。

创建虚拟环境

venv (适用于 Python 3)允许您管理不同项目的单独包安装。它创建了一个"虚拟"隔离的 Python 安装。当您切换项目时,您可以创建一个与其他虚拟环境隔离的新虚拟环境。您可以从虚拟环境中受益,因为可以放心地安装软件包并且不会干扰其他项目的环境。

!Tip

建议在使用第三方软件包时使用虚拟环境。

要创建虚拟环境,请转到项目目录并运行以下命令。这将在名为.venv的本地文件夹中创建一个新的虚拟环境:

Linux/MacOS

shell 复制代码
python3 -m venv .venv

Windows

shell 复制代码
py -m venv .venv

第二个参数是创建虚拟环境的位置。一般来说,您可以在项目中创建它并命名为.venv

venv将在.venv文件夹中创建虚拟 Python 安装。

!Tip

您应该使用.gitignore或类似文件从版本控制系统中排除虚拟环境目录。

激活虚拟环境

在开始在虚拟环境中安装或使用软件包之前,您需要activate它。激活虚拟环境会将虚拟环境特定的pythonpip可执行文件放入 shell 的PATH中。

Linux/MacOS

shell 复制代码
source .venv/bin/activate

Windows

shell 复制代码
.venv\Scripts\activate

要确认虚拟环境已激活,请检查 Python 解释器的位置:

Linux/MacOS

shell 复制代码
which python

Windows

shell 复制代码
where python

当虚拟环境处于活动状态时,上述命令将输出包含.venv目录的文件路径,并以以下内容结尾:

python 复制代码
#Linux/MacOS
.venv/bin/python
#Windows 
.venv\Scripts\python

激活虚拟环境后,pip 会将软件包安装到该特定环境中。这使您能够在 Python 应用程序中导入和使用包。

停用虚拟环境

如果您想切换项目或离开虚拟环境, 使用deactivate命令:

shell 复制代码
deactivate

!Tip

关闭 shell 将停用虚拟环境。如果您打开一个新的 shell 窗口并想要使用虚拟环境,请重新激活它。

如果您想要重新激活现有虚拟环境,请按照激活虚拟环境的相同说明进行操作。无需创建新的虚拟环境。

Pip使用

pipPython 包管理器。它用于将软件包安装和更新到虚拟环境中。

Linux/MacOS

在 Linux 上,您可能需要安装额外的软件包,例如python3-pip 。您可以通过运行以下命令来确保 pip 是最新的:

shell 复制代码
python3 -m pip install --upgrade pip
python3 -m pip --version

之后,您应该在您的用户站点中安装最新版本的 pip:

shell 复制代码
pip 23.3.1 from .../.venv/lib/python3.9/site-packages (python 3.9)

Windows

您可以通过运行以下命令来确保 pip 是最新的:

shell 复制代码
py -m pip install --upgrade pip
py -m pip --version

之后,您应该拥有最新版本的 pip:

shell 复制代码
pip 23.3.1 from .venv\lib\site-packages (Python 3.9.4)

使用 pip 安装软件包

激活虚拟环境后,您可以安装软件包。使用pip install命令安装软件包。

安装第三方包

Linux/MacOS

shell 复制代码
python3 -m pip install requests

Windows

shell 复制代码
py -m pip install requests

指定版本

pip 允许您使用版本说明符指定要安装的软件包版本。例如,要安装特定版本的requests

Linux/MacOS

shell 复制代码
python3 -m pip install 'requests==2.18.4'

Windows

shell 复制代码
py -m pip install "requests==2.18.4"

要安装最新的2.x版本的 requests:

Linux/MacOS

shell 复制代码
python3 -m pip install 'requests>=2.0.0,<3.0.0'

Windows

shell 复制代码
py -m pip install "requests>=2.0.0,<3.0.0"

要安装软件包的预发行版本,请使用--pre标志:

Linux/MacOS

shell 复制代码
python3 -m pip install --pre requests

Window

shell 复制代码
py -m pip install --pre requests

安装包的extra功能

有些package有可选的extra。您可以通过在括号中指定额外内容来告诉 pip 安装它们:

Linux/MacOS

shell 复制代码
python3 -m pip install 'requests[security]'

Windows

shell 复制代码
py -m pip install "requests[security]"

从本地安装包

如果您有Distribution Package存档的本地副本(zip、wheel 或 tar 文件),您可以直接使用 pip 安装它:

Linux/MacOS

shell 复制代码
python3 -m pip install requests-2.18.4.tar.gz

Windows

shell 复制代码
py -m pip install --no-index --find-links=/local/dir/ requests

升级包

pip 可以使用--upgrade标志就地升级包。例如,要安装最新版本的requests及其所有依赖项:

Linux/MacOS

shell 复制代码
python3 -m pip install --upgrade requests

Windows

shell 复制代码
py -m pip install --upgrade requests

从requirements.txt文件安装

pip 允许您在需求文件中声明所有依赖项,而不是单独安装包。例如,您可以创建一个包含以下内容的requirements.txt文件:

Linux/MacOS

shell 复制代码

Windows

shell 复制代码

Linux/MacOS

shell 复制代码
python3 -m pip install -r requirements.txt

Windows

shell 复制代码
py -m pip install -r requirements.txt

生成依赖文件requirements.txt

Linux/MacOS

shell 复制代码
python3 -m pip freeze

Windows

shell 复制代码
py -m pip freeze

pip freeze命令对于创建要求文件非常有用,这些文件可以重新创建环境中安装的所有软件包的确切版本。

相关推荐
m0_613856295 小时前
mysql如何利用事务隔离级别解决特定业务冲突_mysql隔离方案选型
jvm·数据库·python
我的xiaodoujiao5 小时前
API 接口自动化测试详细图文教程学习系列16--项目实战演练3
python·学习·测试工具·pytest
ID_180079054735 小时前
Python 实现亚马逊商品详情 API 数据准确性校验(极简可用 + JSON 参考)
java·python·json
时空系6 小时前
第10篇:继承扩展——面向对象编程进阶 python中文编程
开发语言·python·ai编程
CHANG_THE_WORLD7 小时前
python 批量终止进程exe
开发语言·python
liann1197 小时前
3.2_红队攻击框架--MITRE ATT&CK‌
python·网络协议·安全·网络安全·系统安全·信息与通信
云天AI实战派7 小时前
AI 智能体问题排查指南:ChatGPT、API 调用到 Agent 上线失灵的全流程修复手册
大数据·人工智能·python·chatgpt·aigc
我的xiaodoujiao8 小时前
API 接口自动化测试详细图文教程学习系列15--项目实战演练2
python·学习·测试工具·pytest
多思考少编码9 小时前
PAT甲级真题1001 - 1005题详细题解(C++)(个人题解)
c++·python·最短路·pat·算法竞赛
ZhengEnCi9 小时前
M5-markconv自定义CSS样式指南 📝
前端·css·python