python如何设置虚拟环境|方法有哪几种

原文连接: python设置虚拟环境- Python学习导航

为什么需要虚拟环境?
在使用Python语言时,通过pip(pip3)来安装第三方包,但是由于pip的特性,系统中只能安装每个包的一个版本。但是在实际项目开发中,不同项目可能需要第三方包的不同版本,迫使我们需要根据实际需求不断进行更新或卸载相应的包,而如果我们直接使用本地的Python环境,会导致整体的开发环境相当混乱而不易管理,这时候我们就需要开辟一个独立干净的空间进行开发和部署,虚拟环境就孕育而生。

以下是一些主要的原因:

  1. 隔离项目依赖: 不同的项目可能需要不同版本的依赖库。虚拟环境允许您在每个项目中创建一个独立的Python环境,以确保项目所需的特定依赖关系不会干扰其他项目。

  2. 版本兼容性: 有些项目可能对特定版本的库有依赖,而另一些项目可能需要不同版本。虚拟环境允许您为每个项目指定特定的依赖版本,确保版本兼容性。

  3. 避免全局污染: 在全局Python环境中安装依赖可能会导致全局污染,使得各个项目之间的依赖冲突。通过使用虚拟环境,每个项目都有自己的隔离空间,不会影响系统的全局Python环境。

  4. 便于迁移和分享: 虚拟环境的存在使得项目更容易分享给他人或在不同系统上迁移。通过将虚拟环境信息包含在项目中,其他人可以轻松地在其环境中重建相同的开发环境。

  5. 简化部署: 在生产环境中使用虚拟环境可以确保部署是一致的,并且不受系统全局环境中其他应用程序的影响。这有助于避免潜在的兼容性问题。

总体来说,虚拟环境使得项目的开发和维护更加清晰、可维护,并有助于解决依赖关系管理的挑战。在大型或复杂的项目中,使用虚拟环境是一种良好的实践。

Python中创建虚拟环境的方法有多种,以下是一些常见的方式:

  1. 使用 venv 模块(Python 3.3及以上版本):

    # 在项目目录中创建虚拟环境 python3 -m venv venv # 激活虚拟环境(Windows) venv\Scripts\activate # 激活虚拟环境(Linux/Mac) source venv/bin/activate

  2. 使用 virtualenv 模块:

    # 安装 virtualenv 工具 pip install virtualenv # 在项目目录中创建虚拟环境 virtualenv venv # 激活虚拟环境(Windows) venv\Scripts\activate # 激活虚拟环境(Linux/Mac) source venv/bin/activate

  3. 使用 Pipenv:

    # 安装 Pipenv pip install pipenv # 在项目目录中创建虚拟环境并安装依赖 pipenv install # 进入虚拟环境 shell pipenv shell

  4. 使用 conda:

    如果您使用的是 Anaconda 或 Miniconda,可以使用 conda 创建虚拟环境。

    # 创建一个名为myenv的虚拟环境 conda create --name myenv # 激活虚拟环境 conda activate myenv

  5. 使用 pyenv:

    pyenv 是一个Python版本管理工具,也可以用于创建虚拟环境。

    # 安装 pyenv-virtualenv 插件 git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv # 创建并激活虚拟环境 pyenv virtualenv 3.8.5 myenv pyenv activate myenv

  6. 使用poetry:

      如果您需要精确的版本控制和独立的虚拟环境,Poetry 是一个不错的选择

这些方法中,选择哪一种取决于您的项目需求和个人偏好。一般来说,推荐使用 venv(对于Python 3.3及以上版本)或者 Pipenv,因为它们提供了更简单的使用和更多的功能。如果您使用的是 Anaconda 或 Miniconda,conda 也是一个强大的选择。

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

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

相关文章

c++之旅——第三弹

大家好啊,这里是c之旅第三弹,跟随我的步伐来开始这一篇的学习吧! 如果有知识性错误,欢迎各位指正!!一起加油!! 创作不易,希望大家多多支持哦! 一.命名空间;…

项目设计:基于Qt和百度AI的车牌识别系统(嵌入式ARM)

基于Qt和百度AI智能云实现的智能车牌识别系统,具体可实现为停车场管理系统、智能计费停车系统…等。 1.系统实现思路及框架 1.1实现思路 要实现一个车牌识别系统,有多种方法,例如用opencv图像算法实现,或用第三方算法接口&#x…

输出梯形 C语言

解析:这个输出图形的题就是一个找规律加数学计算,我们发现每行比上一行多两个*,最后一行的*表达式为h(h-1)*2,即3*h-2,那么每一行就是一个先输出最后一行-当前行*个数个空格&#xf…

pytorch 图像数据集管理

目录 1.数据集的管理说明 2.数据集Dataset类说明 3.图像分类常用的类 ImageFolder 1.数据集的管理说明 pytorch使用Dataset来管理训练和测试数据集,前文说过 torchvision.datasets.MNIST 这些 torchvision.datasets里面的数据集都是继承Dataset而来&#xff0c…

【Qt】QTextEdit/QPlainTextEdit 实现 Tab 键多行缩进与反缩进

【Qt】QTextEdit/QPlainTextEdit 实现 Tab 键多行缩进与反缩进 文章目录 I - 主要原理II - 代码实现2.1 - 自定义类2.2 - 实现 Tab 缩进2.3 - 实现反缩进III - 参考链接I - 主要原理 由于 QTextEdit 和 QPlainTextEdit ,都无法实现多行选中缩进与反缩进,选中多行后,按下缩进…

[Redis]——Redis命令手册set、list、sortedset

🌳List类型常见命令 LPUSH / RPUSH [KEY] [element] …… 向列表左侧或者右侧插入一个或多个元素 LPOP / RPOP [key] 删除左边或者右边第一个元素 LRANGE [key] start end 返回索引start到end的元素(索引从0开始) BLPOP / BRPOP [key] [等…

【C++】类的默认成员函数(上)

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 文章目录 一、默认成员函数二、构造函数构造函数的概念及特性 三、析构函数析构函数的特性…

续简单学生管理系统、包装类--day18

Day18 一、删除的思考题 思考题:删除功能可以省略第一步吗?不可以 有第一步判断学生信息合法性,如果信息不合法会直接结束返回 如果没有第一步,将会在第二步判断是否有该学生query循环匹配查找,数据量大情况&#xff…

蓝桥杯倒计时 43天 - 前缀和,单调栈

最大数组和 算法思路&#xff1a;利用前缀和化简 for 循环将 n^2 简化成 nn&#xff0c;以空间换时间。枚举每个 m&#xff0c;m是删除最小两个数&#xff0c;那k-m就是删除最大数&#xff0c;m<k&#xff0c;求和最大的值。暴力就是枚举 m-O(n)&#xff0c;计算前 n-(k-m)的…

PCSA时钟控制集成之时钟门控级别

这一部分描述了&#xff1a; • 时钟门控的级别。 • 实现最大效果的时钟门位置。 • 实现有效和高效时钟门控的集成方法。 时钟树是由时钟缓冲器构建的&#xff0c;这些缓冲器在时钟源&#xff08;时钟输入或PLL&#xff09;与时钟终端&#xff08;寄存器或RAM&#xff09…

ULN2003(COM的作用)

单路内部电路原理图 三极管多级放大电路&#xff0c;最大可达到500ma&#xff1b; 典型应用&#xff1a; ULN2003属于灌电流驱动方式&#xff1b;输入与输出电平反向&#xff0c;下拉4K电阻&#xff0c;为解决单片机上电IO瞬间不稳定&#xff1b; COM端 1.可悬空&#xff1a…

Java面题总结7

spring事务什么时候会失效 1:发生自调用&#xff0c;类里面使用this调用本类的方法&#xff08;&#xff09;此时这个this对象不是代理类&#xff0c;而是UserService对象本身 2&#xff1a;方法不是public 3&#xff1a;数据库不支持事务 4&#xff1a;没有被spring管理 …

git标签操作

一.标签管理 1.理解标签 标签 tag &#xff0c;可以简单的理解为是对某次 commit 的⼀个标识&#xff0c;相当于起了⼀个别名,当我们需要回退到某个重要版本时&#xff0c;直接使⽤标签就能很快定位到 2.创建标签 ⾸先&#xff0c;切换到需要打标签的分⽀上,然后&#xf…

经典目标检测网络Yolo——原理部分

目标检测问题 分为两个子问题: 找到图片中哪些位置、哪些区域含有目标对象识别这些区域中的目标对象是什么基于CNN的目标检测算法能够很好的解决第二个问题,在一张图片仅含一个对象,且该对象占据了整张图片绝大部分面积时,基于CNN的对象识别算法具有很高的准确率。 一种定…

操作系统(1)——学习导论(Ⅱ)

目录 小程一言专栏链接: [link](http://t.csdnimg.cn/6grrU) 学习导论&#xff08;Ⅱ&#xff09;操作系统-赏前人佳作大型操作系统大型操作系统的一些特点和功能举例 服务器操作系统服务器操作系统特点和功能举例 多处理器操作系统举例 个人计算机操作系统举例 掌上计算机操作…

什么是ACID属性。在MySQL中,如何使用事务?给出一个使用事务的示例,并解释其工作原理。

解释什么是ACID属性 ACID是数据库事务正确执行的四个基本要素的缩写&#xff0c;包括原子性&#xff08;Atomicity&#xff09;、一致性&#xff08;Consistency&#xff09;、隔离性&#xff08;Isolation&#xff09;和持久性&#xff08;Durability&#xff09;。这四个属性…

设计模式:什么是设计模式?①

一、什么是设计模式&#xff1f; 1. 是一类程序设计思想 2. 是在大量实践过程中摸索总结出的标准经验提炼 3. 具有多样性和丰富性&#xff0c;不同情况应用的思想不同 二、设计模式的好处 1. 代码生产力和效率的提升 2. 让代码表现更为规整&#xff0c;简洁。阅读维护管理的成本…

【竞技宝】DOTA2-梦幻联赛S22:AR命悬一线 XG确定晋级淘汰赛

北京时间2024年2月28日&#xff0c;DOTA2梦幻联赛S22的比赛在昨日进入小组赛第三个比赛日&#xff0c;本次梦幻联赛共有AR、XG、IG三支中国区的队伍参赛&#xff0c;那么经过三日激烈的比赛之后&#xff0c;目前三支队伍的积分情况以及晋级形势如何呢&#xff1f; XG XG是小组…

贪心(基础算法)--- 区间选点

905. 区间选点 思路 &#xff08;贪心&#xff09;O(nlogn) 根据右端点排序 将区间按右端点排序 遍历区间&#xff0c;如果当前区间左端点不包含在前一个区间中&#xff0c;则选取新区间&#xff0c;所选点个数加1&#xff0c;更新当前区间右端点。如果包含&#xff0c;则跳…

常见的算法

查找算法 基本查找 package MyApi.search;public class a01BasicSearchdemo01 {public static void main(String[] args) { int[] arr{131,127,147,81,103,23,7,79}; int number82;System.out.println(BasicSearch(arr,number));}public static boolean BasicSearch(int[] ar…