用conda和pip隔离Python环境

用conda和pip隔离Python环境

在同一台服务器上运行多个不同的项目,多个项目依赖同一个包的不同版本,如果这些项目都使用全局环境,会发生依赖包冲突,因此有必要引入虚拟环境对不同的项目依赖进行管理。Python的virtualenv包可以用来建立虚拟环境,但是virtualenv对于虚拟环境的管理并不方便,而且不能同时使用多个Python版本。因此采用conda配合pip进行虚拟环境和包管理。具体来说,conda可以对虚拟环境的目录做了统一的管理,也支持不同的虚拟环境对应不同的Python版本,还可以像pip一样从网络安装Python包,也可以安装pip。但conda的国内镜像更新比较慢,很多包的版本比较老,且包的覆盖面也没有pip广,因此笔者安装Python包还是用pip,只是用conda的虚拟环境来隔离不同项目的环境。
关于conda的安装,推荐直接下载安装Anaconda,安装方式可参考网络上其他博客。以下假设读者已经正确安装conda并设置了环境变量。笔者的环境如下:

一、创建conda虚拟环境

用下面的命令创建名为test_env的conda虚拟环境

conda create -n test_envconda env list --查看环境列表

使用下面的命令进入虚拟环境

conda activate test_env  -- 创建虚拟环境

退出虚拟环境

conda deactivate

全局pip
进入test_env虚拟环境后,执行命令which pip(linux) / where pip(win 系统),可以看到当前pip的路径/home/ U S E R N A M E / a n a c o n d a 3 / b i n / p i p ( {USER_NAME}/anaconda3/bin/pip( USERNAME/anaconda3/bin/pip{USER_NAME}是系统用户名)仍然是全局pip的路径,这意味着此时在虚拟环境中使用pip install的方式安装的包,仍会被安装到全局环境下,对全局环境和当前虚拟环境都有效,这是笔者不期望的,因为这样并没有起到环境隔离的作用。
为了验证上面的结论,在虚拟环境中用全局pip安装1.11版本networkx作为测试。

pip install networkx==1.11

安装完成后,在虚拟环境中执行pip list|grep networkx,显示networkx 1.11
conda deactivate退出虚拟环境在全局环境中执行pip list|grep networkx,也显示networkx 1.11

二、在虚拟环境中安装pip

为了让pip安装的包只对虚拟环境升效从而实现环境隔离,需要在虚拟环境中用conda先安装虚拟环境内的pip,再用虚拟环境内的pip安装其他Python包。source activate test_env进入test_env虚拟环境后,用下面的命令安装虚拟环境中的pip

conda install pip

此时再执行which pip,显示的当前pip路径为/home/ U S E R N A M E / a n a c o n d a 3 / e n v s / {USER_NAME}/anaconda3/envs/ USERNAME/anaconda3/envs/{ENV_NAME}/bin/pip( U S E R N A M E 是系统用户名, {USER_NAME}是系统用户名, USERNAME是系统用户名,{ENV_NAME}是conda虚拟环境名),此后执行的pip install都是用的虚拟环境内的pip进行安装,比如我们安装一个2.4版本的networkx

pip install networkx==2.4

安装完成后,在虚拟环境中执行pip list|grep networkx,显示networkx 2.4
source deactivate退出虚拟环境在全局环境中执行pip list|grep networkx,仍显示networkx 1.11,至此,实现了pip安装的包在conda虚拟环境内的隔离。

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

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

相关文章

6个免费的ChatGPT网站

AI 大模型的出现给时代带来了深远的影响: 改变了产业格局:AI 大模型的发展推动了人工智能技术在各行业的广泛应用,改变了传统产业的运作方式,促进了新兴产业的崛起,如智能驾驶、医疗健康、金融科技等。提升了科学研究…

设计模式:面向对象设计的六大原则

目录 前言六大原则 单一职责原则开闭原则里氏替换原则依赖倒置原则接口隔离原则迪米特原则总结 前言 很久没有写博客了,一直给自己找借口说太忙了,过几天有空再写,几天之后又几天,时间就这么快速的消逝。说到底就是自己太懒了&a…

MNN 执行推理(九)

系列文章目录 MNN createFromBuffer(一) MNN createRuntime(二) MNN createSession 之 Schedule(三) MNN createSession 之创建流水线后端(四) MNN Session 之维度计算(五…

编程思想-状态机

前言 对于开发者来说,状态机思想的重要性体现在多个方面,无论是设计复杂的系统还是处理简单的逻辑流程,状态机都能提供清晰、可维护且易于扩展的解决方案。以下是状态机思想对开发者而言的几个关键重要性: 逻辑清晰:状…

两台电脑简单的通信过程详解(经过两个路由器,不同网段)

一、eNSP拓扑图 二、配置4台电脑的IP地址、子网掩码、网关地址。 三、配置路由器 注意拓扑图的接口与本博客是否相符&#xff0c;判断以下命令中的ip是否需要修改。 1.AR1-接口对应IP <Huawei>sys #进入系统视图 [Huawei]int g0/0/0 #进入0/0/0接口 [Huawei-GigabitE…

【计算机网络篇】数据链路层(1)数据链路层的地位,问题

文章目录 &#x1f354;数据链路层在网络体系结构中的地位&#x1f354;链路&#xff0c;数据链路&#xff0c;帧&#x1f354;数据链路层的三个重要问题&#x1f95a;封装成帧和透明传输&#x1f95a;差错检测&#x1f95a;可靠传输 &#x1f354;数据链路层在网络体系结构中的…

飞天使-k8s知识点26-kubernetes温故知新1-pod

文章目录 创建一个podpod的启动命令和参数更改pod 镜像拉取策略 pod 的三种探针pod 探针的实现方式prestop 和 prestart 创建一个pod apiVersion: v1 # 必选&#xff0c;API 的版本号 kind: Pod # 必选&#xff0c;类型 Pod metadata: # 必选&#xff0c;元数据name: nginx # …

Linux文件 profile、bashrc、bash_profile区别

Linux系统中&#xff0c;有三种文件 出现的非常频繁&#xff0c;那就是 profile、bash_profile、bashrc 文件。 1、profile 作用 profile&#xff0c;路径&#xff1a;/etc/profile&#xff0c;用于设置系统级的环境变量和启动程序&#xff0c;在这个文件下配置会对所有用户…

欣瑞达信息技术邀您莅临2024长三角快递物流展

2024数字物流技术展 2024新能源商用车及物流车展 2024电商物流包装展 2024冷链物流展 2024年7月8-10日 | 杭州国际博览中心 参展企业介绍 深圳市欣瑞达信息技术有限公司&#xff08;曾用名&#xff1a;深圳市欣瑞达液晶显示技术有限公司&#xff09;成立于1997年&#xff0c;是…

【Unity】Stream最好用的Selfhost开源轻量服务

【背景】 有好几种场景的投屏或者远控应用希望实现&#xff0c;无论用哪种方式&#xff0c;都绕不开如何构建服务这一关。 【分析】 外网有很多直接付费使用的信令传输类型或是提供流服务的服务器&#xff0c;但我的目标场景是断绝外网的局域网&#xff0c;而且付费也总觉得…

浙江IGM机器人K5控制柜维修需要注意哪些问题?

IGM机器人K5控制柜常见故障及维修方法 1、电源故障&#xff1a; 表现为IGM机器人K5控制柜不能开机或突然断电。 检查&#xff1a;检查电源线是否连接良好&#xff0c;有无破损&#xff1b;检查电源模块的输出电压是否正常&#xff1b; 维修方法&#xff1a;如电源模块损坏&…

Tonghttpserver6.0.1.0部署指引优化版+基本操作指引+部分问题收集持续更新(by lqw)

文章目录 1.准备工作2.控制台安装解压和设置crt配置http.yaml配置grpc.yaml初始化数据库启动和访问ths管控台上传安装包 3.新增分組管理4.新增节点自动安装&#xff08;如果自动安装失败&#xff0c;可参考下一部分的手动安装&#xff09;手动安装&#xff08;自动安装成功的请…

SQL运维_Unix下MySQL-5.5.11配置文件示例

Unix运维_MySQL-5.5.11配置文件示例 MySQL 是一个关系型数据库管理系统, 由瑞典 MySQL AB 公司开发, 属于 Oracle 旗下产品。 MySQL 是最流行的关系型数据库管理系统之一, 在 WEB 应用方面, MySQL 是最好的 RDBMS (Relational Database Management System, 关系数据库管理系统…

C语言从入门到实践——常用字符函数和字符串函数的使用和模拟实现

目录 前言&#xff1a; 1. 字符分类函数 2. 字符转换函数 3.strlen的使用和模拟实现 4. strcpy 的使⽤和模拟实现 5. strcat 的使⽤和模拟实现 6. strcmp 的使⽤和模拟实现 7. strncpy 函数的使用 8. strncat 函数的使用 9. strncmp函数的使用 10. strstr 的使用和模…

QML新建QML后编译出错的解决方法

解决方法&#xff1a; 原有工程可以编译通过&#xff0c;添加了新的qml文件后&#xff0c;编译出现以下错误&#xff1a; undefined reference to QmlCacheGeneratedCode XXX 重新构建工程&#xff0c;错误仍未解决。 将编译文件夹下的.qmake.stash文件删掉&#xff0c;重新编译…

【索引失效】MySQL索引失效场景

1、对索引使用左或者左右模糊匹配 当我们使用左或者左右模糊匹配的时候&#xff0c;也就是 like %xx 或者 like %xx% 这两种方式都会造成索引失效。 比如下面的 like 语句&#xff0c;查询 name 后缀为「林」的用户&#xff0c;执行计划中的 typeALL 就代表了全表扫描&#xff…

不要再封装各种 Util 工具类了,神级框架值Hutool

Hutool 谐音 “糊涂”&#xff0c;寓意追求 “万事都作糊涂观&#xff0c;无所谓失&#xff0c;无所谓得” 的境界。 Hutool 是一个 Java 工具包&#xff0c;也只是一个工具包&#xff0c;它帮助我们简化每一行代码&#xff0c;减少每一个方法&#xff0c;让 Java 语言也可以 …

【项目】基于MiniOS的CFS调度和增量式sleep

基于MiniOS的CFS调度和增量式sleep 文章目录 基于MiniOS的CFS调度和增量式sleep一、项目内容二、项目需求及分析CFS调度策略nicevruntime红黑树 增量式sleep/delay延时队列系统延时队列的插入延迟队列的操作延时队列的实现 三、具体实现3.1 实验环境与搭建3.2 实验设计CFS调度策…

推荐一款很不错的vscode高亮插件

用过很多款高亮插件&#xff0c;总感觉大部分显示都很乱&#xff0c;但是其中有一款用起来很清晰明了&#xff0c;很喜欢&#xff01; 插件名字&#xff1a;select-highlight-cochineal-color 使用效果&#xff1a; 底色高亮让人感觉很清晰&#xff0c;一个好的高亮插件能让你…

详细分析PyAutoGUI中的locate函数(附Demo)

目录 前言1. 基本知识2. 源代码分析3. Demo 前言 起因是实战中locate对个别定位会有偏差&#xff0c;导致一直识别错误 相应的基本知识推荐阅读&#xff1a;详细分析Python中的Pyautogui库&#xff08;附Demo&#xff09; 1. 基本知识 pyautogui.locate()函数用于在屏幕上定…