当前位置: 首页 > news >正文

python虚拟环境安装

python 虚拟环境安装

目录

      • python 虚拟环境安装
        • 0.前言
        • 1.虚拟环境的意义
        • 2.Python 虚拟环境的创建方法
        • 3.总结

0.前言

在 Python 项目中,使用虚拟环境是管理项目依赖和隔离开发环境的最佳实践。它可以避免不同项目之间的依赖冲突,同时确保项目在开发、测试、部署过程中使用的是一致的 Python 版本和依赖库。以下是关于虚拟环境的意义和创建方法的详细介绍。

1.虚拟环境的意义
  1. 依赖隔离:
  • 不同的项目可能依赖不同版本的库。例如,项目A依赖 Django 2.2,而项目B可能依赖 Django 3.1。如果不使用虚拟环境,将无法在同一个系统中同时安装这两种版本的 Django。这会导致项目之间的依赖冲突。而虚拟环境可以为每个项目创建一个独立的 Python 环境,解决这一问题。
  1. 避免全局污染:
  • 在没有虚拟环境的情况下,所有的 Python 包都会安装在全局环境中。如果在全局环境中安装了大量不同版本的库,维护起来会非常混乱。而虚拟环境将项目的依赖库局限在项目目录内,避免了对系统全局环境的污染。
  1. 保证项目的可移植性
  • 使用虚拟环境可以让项目的环境配置更加一致,并且方便其他开发人员在不同的机器上复现相同的环境。通过 requirements.txt 或 Pipfile,其他开发人员可以快速搭建与原项目相同的开发环境。
  1. 支持多版本 Python
  • 在同一台机器上可以运行多个版本的 Python,而虚拟环境允许你为每个项目指定不同的 Python 版本。这样,你可以在不改变系统 Python 版本的情况下,使用最新的 Python 版本来测试和开发新项目。
2.Python 虚拟环境的创建方法

Python 提供多种创建和管理虚拟环境的方法。常用的方式包括使用 venv 模块和 virtualenv 工具。

  1. 使用 venv 模块(Python 3.x 内置模块)

venv 是 Python 3.x 版本中的内置模块,无需安装额外工具。它提供了基本的虚拟环境功能,适合大多数场景。

a. 创建虚拟环境

  • 首先,进入你的项目目录,然后运行以下命令
 # venv 是虚拟目录的名称,可以根据需要更改目录python3 -m venv venv

b.激活虚拟环境

 # 激活source venv/bin/activate

c.安装依赖包

现在,你可以在虚拟环境中使用 pip 安装项目所需的依赖包。它们会被安装到虚拟环境的 venv 目录中,而不会影响全局的 Python 环境。

 # eg:pip install requests

d.生成依赖文件

通过以下命令可以生成项目当前的依赖列表文件 requirements.txt,方便其他开发人员复现环境:

pip freeze > requirements.txt

e.退出虚拟环境

如果你想退出虚拟环境,可以运行以下命令deactivate

f.重新进入虚拟环境

以后如果需要重新进入虚拟环境,执行以下命令即可:

source venv/bin/activate
  1. 使用 Pipenv 模块(现代化的 Python 包管理工具)

Pipenv 是一种更现代的工具,用于管理 Python 项目的包依赖和虚拟环境。它结合了 pip 和 virtualenv 的功能,并且通过 Pipfile 和 Pipfile.lock 来管理依赖关系。

a. 安装 Pipenv

 pip install pipenv

使用 Pipenv 创建虚拟环境

 pipenv install --python 3.9

Pipenv 会自动创建虚拟环境并管理依赖

3.总结
  • 虚拟环境的意义在于为每个项目提供独立的 Python 解释器和依赖管理,避免项目之间的冲突
  • 创建虚拟环境的方法包括使用 Python 自带的 venv 模块对于现代项目管理,还可以使用 Pipenv 进行更好的依赖管理。

虚拟环境是确保 Python 项目开发顺利进行的重要工具,强烈建议在每个项目中使用。


http://www.mrgr.cn/news/56395.html

相关文章:

  • 570,至少有5名直接下属的经理
  • AI未来会拥有人类的情感吗,情感计算领域进展如何?
  • 柯桥俄语学习,旅游俄语中的支付和交际常用语句
  • BurpSuite渗透工具的简单使用
  • 2024年前端开发者必备的20个神器 - 提升效率的终极指南
  • 提取图片内容的 Python 程序
  • [LeetCode] 814. 二叉树剪枝
  • github加速 DevSidecar 1.8.8
  • 免费送源码:Java+ssm+MySQL SSM二手物品管理系统 计算机毕业设计原创定制
  • AutoSar AP CM实例说明符的使用方法总结
  • 开头的例子的理解
  • 【系统规划与管理师】历年各章节分值汇总(论文)
  • C++ 进阶:类相关特性的深入探讨
  • 伺服增量式和绝对式的本质区别?
  • 基因检测4 - 多囊肾
  • flask服务通过gunicorn启动,supervised管理服务
  • 基于Java+ssm的名著阅读网站
  • HTTP 请求中的Content-Type
  • ECHO-GL:盈利电话驱动的异质图学习股票 走势预测
  • HTB:Headless[WriteUP]
  • 数据库实时备份软件
  • 【Linux】为什么环境变量具有全局性?共享?写时拷贝优化?
  • app端文章列表查询-详细教程(上)
  • 下载MySQL-Windows
  • 矩阵概念 和 性质
  • 无源数据TRP,TIS指标好还是有源数据指标好