Python

Python 虚拟环境

运行 python -m venv python-venv 会创建一个 Python 虚拟环境,具体来说是一个独立的 Python 运行环境。这个虚拟环境使得你可以在项目中使用隔离的 Python 版本和依赖库,而不会影响全局 Python 环境或其他项目。

在Python开发中,虚拟环境(venv)是一个非常重要的概念。它允许开发者为不同的项目创建隔离的环境,确保项目之间不会产生依赖冲突。然而,有时候你可能会发现你的venv环境已经丢失或被误删。在这篇文章中,我们将讨论如何重新创建一个Python venv环境,并确保你能够顺利地继续你的开发工作。

虚拟环境的特点


  1. 独立性
    • 每个虚拟环境有自己的 Python 解释器和 site-packages(用于存放依赖包的目录)。
    • 不会与全局的 Python 包混淆或干扰。
  2. 隔离依赖
    • 项目使用的库仅安装在虚拟环境中,不会污染全局环境,也不会影响其他项目。
  3. 兼容性测试
    • 允许使用不同版本的 Python 或不同版本的库来测试代码的兼容性。

venv 命令做了什么


  1. 创建一个目录(如 python-venvpython-venv 是虚拟环境的目录名称,虚拟环境的所有内容都存放在这个文件夹中,你可以为虚拟环境选择任何名字,比如 envvenv 或项目相关的名字。
  2. 在该目录中生成以下内容:
    • Python 解释器的副本:独立的 pythonpip 等工具。
    • site-packages:存放虚拟环境安装的第三方库。
    • 激活脚本:用于激活虚拟环境。

虚拟环境的目录结构(取决于操作系统)

Linux/macOS

python-venv/
├── bin/              # 包含激活脚本和虚拟环境的 Python 可执行文件
├── include/          # 包含 C 头文件(用于编译依赖时)
├── lib/              # 包含 `site-packages`(存放依赖包的地方)
├── pyvenv.cfg        # 虚拟环境的配置信息

Windows

python-venv/
├── Scripts/          # 包含激活脚本和虚拟环境的 Python 可执行文件
├── Include/          # 包含 C 头文件(用于编译依赖时)
├── Lib/              # 包含 `site-packages`(存放依赖包的地方)
├── pyvenv.cfg        # 虚拟环境的配置信息

作用


虚拟环境隔离项目的依赖,具体来说:

  1. 独立的 Python 可执行文件
    • 虚拟环境中包含独立的 pythonpip 工具,使用的依赖库不会影响系统全局环境。
  2. 项目依赖隔离
    • 任何通过 pip 安装的库(如 numpyflask 等)都存储在 python-venvsite-packages 目录中,与全局环境完全隔离。
  3. 多版本兼容性
    • 可以在不同的项目中使用不同的 Python 或库版本,而不会引发冲突。

如何使用


1. 创建虚拟环境

运行:

python -m venv python-venv

2. 激活虚拟环境

Windows:

python-venv\Scripts\activate

Linux/macOS:

source python-venv/bin/activate

激活后,终端提示符会显示虚拟环境名称,例如:

(python-venv) $

3. 安装依赖

在虚拟环境中使用 pip 安装依赖,例如:

pip install <package-name>
pip install numpy

4. 退出虚拟环境

要退出虚拟环境,运行:

deactivate

总结


创建 python-venv 的目的是构建一个隔离的 Python 环境,用于安装和管理特定项目的依赖,而不会干扰系统全局的 Python 环境。这是管理 Python 项目的推荐实践,尤其是在开发和部署中。

  • 创建与项目隔离的环境。
  • 在同一台机器上运行不同版本的 Python 或依赖包。
  • 测试代码在不同环境下的兼容性。