【项目实战】Python虚拟环境,是一种隔离的独立环境,允许在不同项目中管理依赖和版本,避免全局环境冲突。

Python虚拟环境是一种隔离的独立环境,允许在不同项目中管理依赖和版本,避免全局环境冲突。 通过合理使用虚拟环境,开发者能高效管理项目依赖,确保开发、测试和生产环境的一致性,提升协作与部署效率。

1. 定义与作用

  • 定义:虚拟环境是独立的Python运行环境,包含自己的解释器、库(如site-packages)和脚本,与系统全局环境隔离。
  • 作用
    • 依赖隔离:不同项目可使用不同版本的库(如Flask 1.1与2.0),避免冲突。
    • 版本控制:支持特定Python版本(如Python 3.6与3.7)。
    • 可移植性:便于复现环境,简化部署到服务器或其他机器。
    • 避免全局污染:防止全局安装过多包导致环境混乱。

2. 创建虚拟环境

工具与方法
  • venv(Python 3内置)
  # 创建环境
  python -m venv myenv  # myenv为环境目录名[[3,5,15,17]]
  
  # 激活环境
  # Windows:
  myenv\Scripts\activate
  # Linux/Mac:
  source myenv/bin/activate[[3,5,16,19]]
  • virtualenv(需安装)
  # 安装工具
  pip install virtualenv[[11,16]]
  
  # 创建环境
  virtualenv myenv
  # 激活方式同venv[[11,16]]。
  • Conda(跨平台环境管理)
  # 创建环境(默认路径)
  conda create -n myenv python=3.9
  
  # 激活环境
  conda activate myenv

3. 激活与退出

  • 激活:执行对应脚本后,命令行提示符会显示环境名称(如(myenv))。
  • 退出
  # 通用命令
  deactivate[[5,9,15]]
  # Conda特有
  conda deactivate

4. 依赖管理

  • 生成依赖列表
  pip freeze > requirements.txt[[9,15,20]]
  • 安装依赖
  pip install -r requirements.txt[[9,15,20]]
  • Conda的依赖导出
  conda env export > environment.yml

5. 最佳实践

  • 每个项目独立环境:避免多项目共享环境引发冲突。
  • 忽略虚拟环境目录:将venv/myenv/加入.gitignore,避免提交到版本控制。
  • 使用IDE支持:如Thonny、PyCharm等支持直接创建和管理虚拟环境。
  • 跨平台兼容性:注意Windows与Linux/Mac的激活脚本路径差异(如Scriptsbin目录)。

6. 工具对比

  • venv:Python 3原生支持,无需额外安装,适合简单场景。
  • virtualenv:兼容Python 2/3,功能更灵活(如指定Python版本)。
  • Conda:适合科学计算,可管理非Python依赖(如C库)。
  • pyenv:用于切换不同Python版本,常与虚拟环境工具结合使用。

7. 常见问题

  • 全局包访问:使用--system-site-packages参数创建环境,可继承全局安装的包。
  • 第三方包编译:若包需编译(如opencv),需在虚拟环境中配置编译环境。
  • 环境迁移:通过requirements.txtenvironment.yml复现环境,而非直接复制目录。

8. 项目中为什么要使用虚拟环境

8.1.避免全局安装项目中使用的外部模块

全局安装一个项目中使用到的外部模块会影响到系统中的其他Python项目,可能会导致版本冲突或其他问题。使用虚拟环境可以为每个项目创建独立的Python环境,避免这些问题。

安装外部模块,可以在终端输入"pip install 模块名称"进行安装,另外,默认的安装源是国外的(也就是pip会从国外服务器获取安装包),如果要使用国内源,可以命令后加 -i 选项并指定国内源的地址,如:

pip install 模块名称 -i https://pypi.tuna.tsinghua.edu.cn/simple/

也可以设置 pip 默认安装源,以后都默认从这个源获取模块,如下:

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/

8.2.管理项目的依赖

每个项目都有自己的依赖项,使用虚拟环境可以方便地管理这些依赖项。可以使用pip freeze命令来列出项目中所有的依赖项,然后使用pip install命令安装这些依赖项。这样可以确保项目的依赖项与全局Python环境中的其他项目隔离。

8.3.更好地控制Python环境

使用虚拟环境可以更好地控制Python环境,例如你可以为每个项目设置不同的Python版本、不同的配置文件等

你可能感兴趣的:(Python,python,chrome,开发语言)