【零基础自用】理解python为什么要用虚拟环境

news2025/1/12 22:59:35

不知道学过MATLAB或者R的小伙伴刚刚接触python的时候会不会被各种python版本,包版本,虚拟环境之类的搞的头晕眼花。

问题一 包版本

先来假设,我们自己开发了一个包MyPackage 1.0,里面包含一个模块叫PreTrained,然后去维护,每维护维护就更新一下包的版本。MyPackage2.0,甚至里面一些类的名称也有所变动,比如因为不同算法习惯的专业名词迭代更新,对应的包也会有所修改。如,我们把PreTrained 改名为PreTrainedML。
此时,用户小A,用1.0版本的包写了个程序。我们拿来扒一下,想学习,我们也直接安了MyPackage。

pip install MyPackage
from MyPackage import PreTrained

就会报错找不到对应module。因为等我们用的时候包已经更新成2.0版本了,直接安装最新的包,会找不到这个模块,因为它在新版本里改名了。
那么我们就可以安装包的时候指定一下版本。安装的时候在终端里进行,就像R一样,一般安装完之后都要导入一下才能用。install.package(), library(). (但R里我们不会反复安装某个包,python也是一样的)

pip install MyPackage==1.0

问题二 包环境

新问题来了,如果我们学习多个人的代码,发现他们的MyPackage版本都不太一样,一会这个用1.0,那个用的2.0. 我们要一直重新安装不同版本的包么?有小伙伴想,那我把这个包所有版本的包都安在一个环境里不就行了,但是一般包的版本是很多的,而且调用会很混乱。(PS,一般一个环境里不能安两个版本的包。)
那我们怎么办呢?去建立虚拟环境,什么是虚拟环境可以直接查一下,但是下面分享一下怎么理解
在这里插入图片描述
图片来源 https://www.11meigui.com/2023/python-venv.html

假设我们新建一个虚拟环境叫 Kaggle,就可以在里面安装对应的包版本,不用每次都重新安装包之类的。
怎么新建呢?我的计算机里面又都有哪些环境呢?那我这个环境怎么选呢?下面一一解释一下。

关于新建用的命令工具(pip/conda)

可以在计算机上用 pip 命令新建 见 https://zhuanlan.zhihu.com/p/60647332
也可以用anaconda帮我们新建和管理,下面主要举例如何用conda 命令新建,逻辑是一样的

插一句 conda和pip的作用和区别,可以理解二者都是安装xx包的命令
pip:是 Python 的官方软件包管理工具,用于安装和管理 Python 软件包。不太适用于其他语言。
conda: 是 Anaconda 软件(后续有讲)的一部分,用于管理软件环境和软件包。不仅仅是 Python 软件包,还包括 C、C++ 等其他语言的软件包。conda 可以创建和管理虚拟环境。

比如就像上述安装包时,也可以用conda

# 两行命令作用一样
pip install MyPackage==1.0
conda install MyPackage==1.0
下面回来继续说怎么新建虚拟环境
# 代码
conda create -n your_env_name python=x.x
# 实例 比如建立Kaggle虚拟环境
conda create -n Kaggle python=3.6
新建完了,我怎么看?我的计算机里面又都有哪些环境呢?
(Kaggle) ziqzha@psy-xxxx ~ % conda info --envs 

在这里插入图片描述

怎么确认我现在的环境是那个?

安装包都是先选择环境,再进行安装。看红色方框,名字对应的就是所在环境。
在这里插入图片描述

更多见Anaconda-用conda创建python虚拟环境 https://zhuanlan.zhihu.com/p/94744929

问题三环境和python对应

问题又来了,行,我知道要有虚拟环境,可以安特定版本的包,在这个环境里直接跑代码就不会出现版本冲突。但是我怎么确定我打开的python用的能是这个环境呢?这个怎么对应调?
(对于习惯直接点击app图标打开代码的小伙伴,应该疑惑过),理解了要做什么就好调试了。

说几种方法,一个是从选择过环境的终端里打开,比如上述红色方框环境是(Kaggle),那么直接输入python,就是对应的。
(Kaggle) ziqzha@psy-xxxx ~ % python

在这里插入图片描述

二 Pycharm里怎么对应环境和脚本Script (就是py文件)

右下角 是环境名,可以看到我这里对应的就是 Kaggle环境,那么我当前的py文件运行直接就是在这个环境里。在这里插入图片描述
修改对应的环境:

  1. 选择Interpreter setting ,这里可以看到当前环境我们安装了哪些包,以及对应的版本。


2. add interpreter: 会显示可以选择的环境,virtualenv 是我们自己手动在电脑上建立的虚拟环境。anaconda(conda Enviroment) 是一个可以便捷获取包且对包能够进行管理,同时对环境可以统一管理的发行版本。

在这里插入图片描述

三 anaconda 简单介绍一下

里面环境直接都给列出来了,在终端里选择什么环境,安装卸载包,这里对应都可以刷新出来
比如终端里

# 这行代码就表示,在kaggle环境里,卸载包 mypackage
(Kaggle) ziqzha ~% conda uninstall MyPackage

然后Anaconda软件里面,kaggle环境下这个包也没了,有时候发现还在,可能是因为没有刷新,我一般都是点其他环境(如点base(root)),再点回来(点击Kaggle)。(这也对应Jupyter notebook里的 kernel的选项,kernel对应的就是我们的环境。如果在终端进行了什么新操作(安装或卸载),有时候需要refresh kernel (刷新一下环境))。
在这里插入图片描述

可能存在错误,评论里欢迎指正

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

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

相关文章

Python爬虫(十三)_案例:使用XPath的爬虫

本篇是使用XPath的案例 案例:使用XPath的爬虫 现在我们用XPath来做一个简单的爬虫,我们尝试爬取某个贴吧里的所有帖子且将该帖子里每个楼层发布的图片下载到本地。 #-*- coding:utf-8 -*- #tieba_xpath.py"""作用:本案例使用…

【AGC】Publishing api怎么上传绿色认证审核材料

【问题描述】 华为应用市场会对绿色应用标上特有的绿色标识,代表其通过华为终端开放实验室DevEco云测平台的兼容性、稳定性、安全、功耗和性能的检测和认证,是应用高品质的象征。想要自己的应用认证为绿色应用就需要在发布应用时提供绿色认证审核材料&a…

Go语言基础之基本数据类型

Go语言中有丰富的数据类型,除了基本的整型、浮点型、布尔型、字符串外,还有数组、切片、结构体、函数、map、通道(channel)等。Go 语言的基本类型和其他语言大同小异。 基本数据类型 整型 整型分为以下两个大类: 按…

echarts 关于折线统计图常用的属性设置--超详细(附加源码)

文章目录 折线统计图设置x轴字体大小及字体颜色设置y轴字体大小及字体颜色设置背景颜色及设置折线颜色设置折线效果图显示阴影折线图位置及标签位置设置鼠标悬浮折线弹出窗口显示对应的数据设置自动横向滚动 总结 大家好!近期我会分享几篇关于echarts方面的技术点&a…

easy-es 使用

1、pom中引入依赖 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.14.0</version></dependency><dependency><groupId>org.…

CentOS ens160 显示disconnected

使用nmcli device查看网卡状态&#xff0c;显示如图&#xff1a; 检查宿主机系统VMware DHCP Sevice和VMware NAT Sevice服务是否正常运行。 右键点击我的电脑管理按钮&#xff0c;打开计算机管理点击服务

C语言实例_异或校验算法

一、异或校验算法 异或校验算法&#xff08;XOR校验&#xff09;是一种简单的校验算法&#xff0c;用于检测数据在传输或存储过程中是否发生了错误。通过将数据中的所有比特位相异或&#xff0c;生成一个校验码&#xff0c;然后将该校验码与接收到的数据进行比较&#xff0c;以…

如何大幅提高遥感影像分辨率(Python+MATLAB)

前言: 算法:NSCT算法(非下采样变换) 数据:Landsat8 OLI 遥感图像数据 编程平台:MATLAB+Python 论文参考:毛克.一种快速的全色和多光谱图像融合算法[J].测绘科学,2016,41(01):151-153+98.DOI:10.16251/j.cnki.1009-2307.2016.01.028. 左图:未进行融合的多光谱真彩色合…

ChatGPT逐句逐句地解释代码并分析复杂度的提示词prompt

前提安装chrome 插件 AI Prompt Genius&#xff0c; 请参考 3 个 ChatGPT 插件您需要立即下载 你是首席软件工程师。请解释这段代码&#xff1a;{{code}} 添加注释并重写代码&#xff0c;用注释解释每一行代码的作用。最后分析复杂度。快捷键 / 选择 Explain Code 输入代码提…

内网隧道代理技术(十七)之 NPS的使用

NPS的介绍和使用 NPS介绍 nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理、p2p等,…

RFID技术助力汽车零配件装配产线,提升效率与准确性

随着科技的不断发展&#xff0c;越来越多的自动化设备被应用到汽车零配件装配产线中。其中&#xff0c;射频识别&#xff08;Radio Frequency Identification&#xff0c;简称RFID&#xff09;技术凭借其独特的优势&#xff0c;已经成为了这一领域的重要技术之一。本文将介绍RF…

Cpp基础Ⅰ之编译、链接

1 C是如何工作的 工具&#xff1a;Visual Studio 1.1 预处理语句 在.cpp源文件中&#xff0c;所有#字符开头的语句为预处理语句 例如在下面的 Hello World 程序中 #include<iostream>int main() {std::cout <"Hello World!"<std::endl;std::cin.get…

宝塔部署Java+Vue前后端分离项目经验总结

前言 之前部署服务器都是在Linux环境下自己一点一点安装软件&#xff0c;听说用宝塔傻瓜式部署更快&#xff0c;这次浅浅尝试了一把。 确实简单&#xff01; 1、 买服务器 咋买服务器略&#xff0c;记得服务器装系统就装 Cent OS 7系列即可&#xff0c;我装的7.6。 2、创建…

私密数据采集:隧道爬虫IP技术的保密性能力探究

作为一名专业的爬虫程序员&#xff0c;今天要和大家分享一个关键的技术&#xff0c;它能够为私密数据采集提供保密性能力——隧道爬虫IP技术。如果你在进行敏感数据采集任务时需要保护数据的私密性&#xff0c;那么这项技术将是你的守护神。 在进行私密数据采集任务时&#xff…

曲面(弧面、柱面)展平(拉直)瓶子标签识别ocr

瓶子或者柱面在做字符识别的时候由于变形&#xff0c;识别效果是很不好的 或者是检测瓶子表面缺陷的时候效果也没有展平的好 下面介绍两个项目&#xff0c;关于曲面&#xff08;弧面、柱面&#xff09;展平&#xff08;拉直&#xff09; 项目一&#xff1a;通过识别曲面的6个点…

报名开启 | HarmonyOS第一课“营”在暑期系列直播

<HarmonyOS第一课>2023年再次启航&#xff01; 特邀HarmonyOS布道师云集华为开发者联盟直播间 聚焦HarmonyOS 4版本新特性 邀您一同学习赢好礼&#xff01; 你准备好了吗&#xff1f; ↓↓↓预约报名↓↓↓ 点击关注了解更多资讯&#xff0c;报名学习

[C++]笔记-制作自己的静态库

一.静态库的创建 在项目属性c/c里面,选用无预编译头,创建头文件与cpp文件,需要注意release模式下还是debug模式,在用库时候要与该模式相匹配,库的函数实现是外界无法看到的,最后在要使用的项目里面导入.h文件和.lib文件 二.使用一个循环给二维数组赋值 行数 : 第几个元素 / …

一文带你了解CMS收集器:并发低停顿收集器

一、工作流程 CMS&#xff08;Concurrent Mark Sweep&#xff09;收集器是一种以获取最短回收停顿时间为目标的收集器。互联网网站或者基于B/S系统&#xff08;B/S系统是指Browser/Server系统&#xff0c;也就是基于浏览器和服务器的系统架构&#xff09;的服务端应用通常会关…

ADC静态特性测试

测试环境搭建&#xff1a; 码密度分析法的局限性 更新&#xff1a; MATLAB R2020a之后的版本&#xff0c;更新了函数 “inldnl()”&#xff0c;可以自动计算INL和DNL。具体用法看MATLAB说明文档即可。