python虚拟环境(venv)

一、什么是python环境

首先要知道什么是python环境?

Python环境主要包括以下内容:

  1. 解释器 python.exe (python interpreter,使用的哪个解释看环境配置)

  2. Lib目录

  3. 标准库

  4. 第三方库:site-pakages目录,默认安装第三方库所在的目录

  5. Scripts目录,包含一些执行文件

二、什么是虚拟环境

为什么有虚拟环境的说法。思考以下问题:

a,有两个项目A和B,如果A和B都要用到某一模块(库),但是使用的模块(库)版本不相同怎么办?或者一个要使用python2.X,一个使用python 3.X,怎么办?

为了解决上面的问题,python使用了虚拟环境这个概念,可以认为是python环境的多个副本,只是在不同的副本中安装了不同的包。既然叫虚拟环境,总得有点不一样:虚拟环境中一般不包含标准库;不包含python解释器运行时所需的依赖文件;可执行文件全部放于Scripts目录等。

如项目pyworkspace的python虚拟环境,此项目使用的解释器为项目创建的虚拟环境中,路径D:\Document\Workspace\pywokrspace\venv\Scripts下的解释器,不是python环境变量维护的默认解释器。当然也可以调整和更改。
在这里插入图片描述
在这里插入图片描述

三、虚拟环境的好处

虚拟环境(Virtual Environment)是 Python 中用于隔离项目依赖和开发环境的一种机制。它的作用如下:

项目隔离: 虚拟环境允许您在同一台计算机上创建多个独立的 Python 环境,每个环境都可以具有自己的包和依赖关系。这样可以避免不同项目之间的依赖冲突问题,确保每个项目都有独立、干净的开发环境。

依赖管理: 在虚拟环境中,您可以安装和管理项目所需的特定版本的 Python 包和依赖项。这使得您可以精确地控制每个项目所使用的包版本,避免由于包升级或变更而导致的兼容性问题。

可移植性: 虚拟环境使您的项目更具可移植性。您可以将项目的虚拟环境打包并与项目一起分发,以确保其他人在不同的计算机上能够轻松地重现和运行项目。

环境隔离: 虚拟环境提供了一种隔离的开发环境,您可以在其中安装和测试新的 Python 包和工具,而不会对系统的全局 Python 环境产生影响。这使得您可以更安全地尝试新的软件库或工具,而不会破坏您的系统环境。

总而言之,虚拟环境使得多个项目可以独立地开发和运行,避免了依赖冲突和环境污染问题,提供了更好的可移植性和灵活性。这是 Python 开发中非常有用的工具之一,推荐在项目中使用虚拟环境来管理依赖和环境。

四、常用虚拟环境工具

知道了什么是虚拟环境,就应该清楚如何去管理虚拟环境,这就离不开虚拟环境管理工具,下面列出了一些常用的工具,并在稍后的内容中对部分工具的使用作简单的介绍。

  1. Virtualenv

virtualenv 是非常流行的 python 虚拟环境配置工具。它不仅同时支持 python2 和 python3,还可以为每个虚拟环境指定 python 解释器,并选择不继承基础版本的包。

  1. venv

考虑到虚拟环境的重要性,Python 从3.3 版本开始,自带了一个虚拟环境模块 venv,关于该模块的详细介绍,可参考 PEP-405 。它的很多操作都和 virtualenv 类似。如果你使用的是python3.3之前版本或者是python2,则不能使用该功能,依赖需要利用virtualenv进行虚拟环境管理。 虽然自带该模块,我们也可用不使用该虚拟环境,可用通过interpreter解释权指定虚拟环境。

  1. conda

支持Python、R、Java、JavaScript、C等多种开发语言的包、依赖和环境管理工具,能运行在Windows、MacOS、Linux多个平台,可以在本地轻松创建、保存、切换环境。当安装anaconda时,会自动安装conda工具。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/82174.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

题目:2859.计算 K 置位下标对应和

​​题目来源: leetcode题目,网址:2859. 计算 K 置位下标对应元素的和 - 力扣(LeetCode) 解题思路: 逐个计算下标是否符合要求即可。 解题代码: class Solution {public int sumIndicesWithK…

敏捷开发工具:提升软件研发效率的重要利器

在当今的软件开发领域,敏捷开发方法越来越受到推崇。敏捷开发的核心是灵活应对需求变化,以快速迭代的方式不断优化产品。为了助力敏捷开发的实施,各种敏捷开发工具应运而生。 本文将介绍几种常用的敏捷开发工具,阐述其特点、应用…

18 Python的sys模块

概述 在上一节,我们介绍了Python的os模块,包括:os模块中一些常用的属性和函数。在这一节,我们将介绍Python的sys模块。sys模块提供了访问解释器使用或维护的变量,以及与解释器进行交互的函数。 通俗来讲,sy…

第三十一章 Classes - 继承规则

第三十一章 Classes - 继承规则 继承规则 与其他基于类的语言一样,可以通过继承组合多个类定义。 类定义可以扩展(或继承)多个其他类。这些类又可以扩展其他类。 请注意,类不能继承 Python 中定义的类(即 .py 文件中…

基于DSPACE功率平衡理论的并联有源电力滤波器模型(Simulink)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

入行IC | 新人入行IC选择哪个岗位更好?

很多同学入行不知道怎么选择岗位。IC的岗位一般有设计、验证、后端、封装、测试、FPGA等等。但是具体到每个人身上,就要在开始的时候确定下你要找的职位,可以有两个或三个,但是要分出主次,主次不分会让你纠结整个找工作的过程。 …

webpack配置alias后eslint和ts无法识别

背景 我们在 webpack 配置 alias 后,发现项目中引入的时候,还是会报错,如下: 可以看到,有一个是 ts报错,还有一个是 eslint 报错。 解决 ts 报错 tsconfig.json {"compilerOptions": {...&q…

【力扣每日一题】2023.9.18 打家劫舍Ⅲ

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 今天是打家劫舍3,明天估计就是打家劫舍4了。 今天的打家劫舍不太一样,改成二叉树了,不过规则没有变&…

ORACLE多列中取出数据最大的一条

1.需求说明: 当查询出来的数据存在多条数据时,想按照一定条件排序取出其中一条数据。 2.使用函数: row_number() over( partition by 分组字段 order by 排序字段 desc) 3.示例: --根据table_a中的pk_house&#x…

狗dog 数据集VOC-5912张

狗,是食肉目犬科犬属 哺乳动物 ,别称犬,与马、牛、羊、猪、鸡并称“六畜” 。狗的体型大小、毛色因品种不同而不同,体格匀称;鼻吻部较长;眼呈卵圆形;两耳或竖或垂;四肢矫健&#xff…

网站降权的康复办法(详解百度SEO数据分析)

随着搜索引擎算法的不断升级,很多网站在SEO优化过程中遭遇到降权的情况。如果您的网站也遭遇到了类似的问题,不必惊慌失措。本文将为您详细介绍网站降权恢复的方法,包括百度SEO数据分析、网站收录少的5个原因、网站被降权的6个因素以及百度SE…

超自动化的未来

如今,部分企业正尝试从小规模的自动化开始,将超级自动化用于营销分析和数据库维护等不同任务。企业应该对超自动化进行更深入的挖掘,如果人们能够更加仔细的观察总结企业的每个流程,那么就能发现更多可以从自动化技术中受益的领域…

IP风险查询:抵御DDoS攻击和CC攻击的关键一步

随着互联网的普及,网络攻击变得越来越普遍和复杂,对企业和个人的网络安全构成了重大威胁。其中,DDoS(分布式拒绝服务)攻击和CC(网络连接)攻击是两种常见且具有破坏性的攻击类型,它们…

js写一个判断字符串是否能够转为JSON 的函数

其实非常简单 这里我们需要涉及到 捕获异常 因为如果你直接在if里面转 我已经试过了 直接就报错了 一点面子不给 我们写一个这样的函数 function isJsonString(str) {try {JSON.parse(str);return true;} catch (e) {return false;} }编写如下代码 console.log(isJsonString(…

企业架构LNMP学习笔记58

开始学习Tomcat: 学习目标和内容: 1)能够描述Tomcat的使用场景; 2)能够简单描述Tomcat的工作原理; 3)能够实现部署安装Tomcat; 4)能够实现和配置Tomcat的Server服务…

openstack的port重建流程【neutron port-show 中的ip信息】

文章目录 说明日志prot重建过程 说明 为什么要重建port,是因为有一台虚拟机迁移失败回退后依然无法启动,原因是因为不能重建网络,所以尝试重建port解决这个问题。而重建port信息后,问题解决,虚拟机可以正常启动了。 …

VMware虚拟机如何设置网络

一直没弄明白怎么能让虚拟机正常上网和访问,最近总结一个小经验 要在宿主机访问虚拟机电脑服务器,要设置成nat格式,虚拟机可以上网,宿主机访问虚拟机上的ip即可访问虚拟机里的服务器,也就是这样设置就行。 这时候ip不…

blender怎么设置中文界面

你们知道Blender软件是什么吗?你知道blender怎么设置中文界面吗?Blender是个GNU的3D绘图软件,建模、算图、动画等功能都相当的完整,可以说已经具有了一般商业软件的规模。Blender大部分的功能都有热键,操作起来相当地轻…

实现安全的服务通信:探索如何使用服务网格来确保服务间的安全通信

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

Python实现Token过期自动刷新并重试原请求

文章目录 问题描述解决方案代码参考文献 问题描述 本人系统经常与上游系统进行交互,其中获取 Token 的接口调用次数过多,想将它存储在内存中,在请求失败后再重新获取 Token 继续进行原请求。 解决方案 灵感来自 sbzhu 的项目 weworkapi_pyt…