python多环境管理一(venv与virtualenv)

快速了解 Python 官方虚拟环境管理工具 venv venv是Python标准库的一部分,从Python 3.3版本开始引入,是Python官方推荐的创建和管理虚拟环境的工具。 阅读详情

一、背景

我们经常会遇见这样的场景:

1、各个项目使用的python版本不相同

由于Python的解释器版本众多,各版本之间差异非常大。特别是python2和python3,互不兼容。

有些项目可能用的python2.7,有些项目可能用的是python3.6,有些则使用的3.8等,但是它们却需要运行在同一个服务器环境中。(docker除外,docker容器可以隔离不同的项目环境。)

2、系统依赖自带的解释器

系统的一些服务组件一般也会依赖Python环境。不同的Linux发行版自带的Python也不同。如ubuntu16自带2.7和3.5版本, Centos7依赖python2.7。而系统很多组件都依赖自带的解释器,比如yum等,你不能轻易删除这个版本,一旦删除或者更改都可能造成系统出问题。

3、依赖默认的解释器路径冲突

比如Centos7系统自带的python是2.7,系统很多组件比如yum依赖的都是2.7这个版本。但是我们发现这些工具开头使用的都是:#!/usr/bin/python。

而一些新的使用python开发的服务组件,它们依赖的确实python3.6以上的版本,但是它们一些代码开头用的也是这个引用:#!/usr/bin/python。

它们都是用python这一个引用,却没有使用python2、python3这样分开,这就很容易导致它们的一些python引用冲突。

4、依赖冲突。(最常见)

我们都知道python的软件包依赖经常是个很头疼的问题,经常因为这个问题导致到家在安装一些python环境或者服务组件时失败。

而不同的python解释器版本,对软件包依赖库的管理也是个问题。

比如sqlalchemy这个包,有些项目使用的python2.7版本,它需要依赖这个库,有些项目使用的python3.6版本,它也需要依赖这个库,有些项目使用的python3.8版本,它同样也需要依赖这个库,

但是头疼的是,这三者它们依赖的这个包版本还不一致。sqlalchemy从0.1-2.0有众多版本。

这时候如果你在系统上直接使用pip install sqlalchemy的话,它只能选择安装一个版本,但是这样其他两个项目是无法使用这个版本,就会出现依赖冲突的问题。

由于 Python 的依赖库管理是中心化的,而且大版本上的不兼容且长期并行,就出现了这么一个独特的话题。

你的环境隔离了吗?

二、多环境隔离解决方案

那么有没有一个终极的解决办法能在管理不同解释器版本的同时控制不同的包环境呢?

有的,Python 社区已经涌现了众多这种工具。

Python 多环境隔离,可以让你的每个项目拥有独立的依赖库,即 site-packages。

三、venv

为什么把 venv 放在第一个,因为它是自 3.3 版本之后添加的官方库,自 3.6 版本之后,成为官方推荐的多环境管理工具。也就是说,你不需要安装任何第三方库就可以实现多环境管理了。

注意:python3.3版本之后自带的模块,只支持3.3版本之后的,不支持2.x

1、虚拟环境管理

使用venv创建虚拟隔离环境:

python3 -m venv /data/myproj

它会创建/data/myproj目录,下面如下:

ll /data/myproj

如下图:

bin下面是pip、python等一些可执行环境,

pyvenv.cfg 是我们的配置文件,为什么叫 pyvenv,因为这个库的前身就叫 pyvenv。

而我们的 site-packages 就在 lib 目录下。

激活虚拟环境:

cd /data/myproj source ./bin/activate

如下图,命令行最前面会显示环境名。

激活

Python 多环境搭建方法 为了解决这个恼人的问题,Anconda3 就大显神通了,它是一个免费的 Python 发行版,其最大的特色是 Virtualenv(虚拟环境),通过 Conda 管理器可以同时管理多个 Python 环境,回到上面的问题,如果我们把A包和B包隔离开,让他们处于两个不同的 python 环境就好了,问题就迎刃而解了。但是安装的包越多,python 的环境就会出现越来多的兼容性问题,比如两个包同时依赖于 Scipy,但是A包和B包他们对于 Scipy 的版本不同,导致装了A包就无法装B包。 阅读详情

相关推荐

Python虚拟环境(virtualenv/venv)的全面指南:创建、管理与最佳实践

本文全面介绍了Python虚拟环境的使用方法,重点讲解了venv和virtualenv两种工具的使用场景和操作步骤。虚拟环境能够有效解决Python项目开发中的依赖冲突问题,确保不同项目的依赖隔离,避免全局环境污染。文章详细说明了如何创建、激活、管理和删除虚拟环境,并提供了依赖管理的最佳实践,包括分层依赖管理、精确版本控制以及团队协作中的环境统一配置。此外,还通过Mermaid流程图展示了虚拟环境的工作流程,并针对常见问题提供了解决方案。通过本文,开发者可以建立规范的Python开发环境管理流程,提升开发效

记录学习的过程 3933

Python环境管理入门:理解Pyenv、Venv、Virtualenv和Anaconda

Python的灵活性和强大功能让它成为了世界上最受欢迎的编程语言之一。无论是开发简单的脚本、构建复杂的应用程序还是进行数据科学研究,Python都是一个非常好的选择。然而,随着项目数量的增加和需求的多样化,如何管理不同项目的Python环境和依赖就成了一个挑战。幸运的是,有几种工具可以帮助我们解决这个问题:Pyenv、Venv、Virtualenv和Anaconda。本文将为初学者提供一个清晰的指南,帮助你理解这些工具的区别和用法。

chen的博客 2896

Maya绑定:人物绑定详细案例(创建骨骼、镜像骨骼、IK创建、IK打组、IK控制器、FK控制器、烘焙动画、导出)

Maya绑定:人物绑定详细案例(创建骨骼、镜像骨骼、IK创建、IK打组、IK控制器、FK控制器、烘焙动画、导出)

m0_45877477的博客 1626

《python神经网络编程》程序实现

《python神经网络编程》程序实现 通过对这本书的学习,结合这本书的内容: 完成了以下代码: 其中NN.py实现了一个类,这个类可以完成神经网络的初始化,训练以及输入数据并得出结果。 而run.py则是对神经网络类的使用 NN.py: import numpy import scipy.special #神经网络类的实现 class neuralNetwork: #构造函数初始化类 def __init__(self,inputnodes,hiddennodes,outputnodes

ms8617484的博客 618

Win11实时字幕还能这么玩?手把手教你打造专属‘AI字幕机’,告别视频网站无字幕困扰

本文详细介绍了如何利用Win11的实时字幕功能打造全平台通用的AI字幕系统。通过C#抓取程序、Node.js中转服务和前端展示界面的组合,实现自动抓取系统字幕并实时推送到任意网页视频的方案,有效解决在线视频无字幕的困扰。

weixin_33735077的博客 390

AI Agent在营销领域的实战策略

本文从第一性原理出发,系统性拆解AI Agent在营销领域的落地逻辑、技术架构、实现方案与实战策略。全文覆盖从基础概念到高级优化的全层级知识:底层理论层面推导营销Agent的效用函数与决策框架;技术架构层面提出"感知-记忆-规划-行动-反思"五组件可落地架构;实践层面提供生产级代码实现、多行业案例与ROI提升方法论;前沿层面探讨多Agent协同、世界模型仿真等下一代技术方向。

操作系统内核探秘的博客 226

Project 编制进度计划【项目管理】

Project 项目管理编制进度计划详解。

m0_52861684的博客 5084

ESP32S3与ILI9341 LCD屏LVGL移植实战:从零构建嵌入式GUI界面

本文详细介绍了如何在ESP32S3平台上移植LVGL图形库并驱动ILI9341 LCD屏幕,从硬件选型、开发环境配置到显示驱动实现和内存优化。通过实战案例讲解移植过程中的关键步骤和常见问题解决方案,帮助开发者快速构建嵌入式GUI界面。

h9j8k7l6m5n的博客 1096

寄存器与计数器设计(Verilog)

always @(posedge Reset or posedge Clock)//请在括号中补充敏感信号列表。always @(negedge Resetn , posedge Clock)//请在括号中补充敏感信号列表。always @(negedge Resetn,posedge Clock)//请在括号中补充敏感信号列表。//为了便于自动评测,请勿更改n的值。//为了便于自动评测,请勿更改n的值。//为了便于自动评测,请勿更改n的值。//为了便于自动评测,请勿更改n的值。

M_inherit的博客 359

【2026最新版】PCL点云处理算法汇总(C++长期更新版)

PCL学习目录。博客长期更新,最近一次更新时间为:2026年10月4日。

点云侠的博客 63万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

上一篇: python驱动SAP完成数据导出
下一篇: 手把手教你使用opencv-python库制作屏幕录制工具(附源码)
Python_xiaowu
博客等级 码龄5年 3096粉丝 178原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值