关于虚拟环境中遇到的bug

conda和cmd介绍

介绍

Conda

  1. 概述

    • Conda是一个开源包管理系统和环境管理系统,尤其适用于Python和R语言的开发环境。
    • 它允许用户创建独立的虚拟环境,方便地管理依赖包和软件版本。
  2. 特点

    • 环境管理:可以创建、导入、导出和删除独立的环境。这对不同项目使用不同依赖版本时非常有用。
    • 包管理:支持安装、更新和卸载包,能够解决包之间的依赖关系。
    • 跨平台:支持在Windows、Unix和MacOS上运行。
  3. 优点

    • 避免软件包版本冲突。
    • 简化科学计算和数据分析中的软件管理。
    • 有大量的预编译包,方便安装(如NumPy、Pandas、SciPy等)。

CMD

  1. 概述

    • CMD(命令提示符)是Windows操作系统的一个命令行解释器,用于执行操作系统命令和脚本。
    • 主要用于进行文件管理、程序执行、系统设置等低级操作。
  2. 特点

    • 命令行界面:用户通过输入文本命令来与操作系统进行交互。
    • 操作范围:可以调用系统命令、批处理文件、运行可执行程序等。
  3. 优点

    • 强大的文件管理功能。
    • 可以执行各类批处理脚本,进行自动化任务。
    • 适合具备命令行操作经验的用户。

区别

  • 用途

    • Conda专注于包和环境管理,特别是在数据科学和机器学习领域。
    • CMD用于操作系统级别的任务,如文件管理和系统配置。
  • 运行环境

    • Conda在其环境中运行,使用特定的Python和依赖。
    • CMD是全系统的命令行界面,不限于特定的编程语言。

界面

conda

cmd

虚拟环境

Bash和创建的虚拟环境

Bash

  1. 概述

    • Bash(Bourne Again SHell)是一个Unix Shell,广泛用于Linux和MacOS等操作系统中。
    • 它是一种命令行解释器,允许用户通过文本命令与操作系统进行交互。
  2. 功能

    • 命令行操作:执行文件和程序、管理文件系统、运行脚本等。
    • 编程功能:支持条件语句、循环、函数等,可以编写复杂的脚本来自动化任务。
    • 环境管理:可以设置和使用环境变量,影响运行在该Shell中的程序的行为。
  3. 特点

    • 跨平台(在多种Unix/Linux环境中运行)。
    • 基本上用于与操作系统的交互,而不是专注于特定的编程语言环境。

创建的虚拟环境

  1. 概述

    • 虚拟环境是用于创建隔离的、独立的Python运行环境的工具,可以用venvvirtualenvconda等命令创建。
    • 每个虚拟环境都有自己的Python解释器和依赖包,互不干扰。
  2. 功能

    • 隔离依赖:可以为每个项目安装特定版本的包,避免包之间的冲突。
    • 简化部署:便于在不同项目中维护不同的依赖和库,而不影响全局Python环境。
  3. 特点

    • 创建的虚拟环境是特定于Python的,与特定的Python版本和依赖包绑定。
    • 适用于Python开发者,特别是在进行数据科学、机器学习等项目时

注意

cmd和conda

cmd和conda可以比喻成window下的两个兄弟,cmd是大哥,conda是二哥,cmd中的python和conda中的python是两个东西

bash和conda中创建的虚拟环境

bash和conda中创建的虚拟环境可以比喻成父子,bash的python是老爸,conda虚拟环境中的python是儿子,其实在bash中,我们默认下载的python,他就会放在一个全局的环境当中,我们pip下载的库,也会放在一个全局的环境当中,当全局环境中包下载过多,就会造成一些版本的冲突。我们可以把bash和conda比喻成两个文件夹,bash的python用的是bash中的库,conda的python用的是conda的库,两者互不干扰。

jupyternotebook

我们会使用pip jupyter notebook下载,但是如果你在cmd中(不是虚拟环境)下载,他就会创建一个jupyter,相当于一个全局jupyter,如果你在conda(不是虚拟环境)中下载,他就会在conda中创建一个jupyter,相当于在conda中的一个全局jupyter。所以我们可以创建一个虚拟环境,虚拟环境中启动jupyter notebook,会使用虚拟环境中的内核

内核

在Jupyter Notebook中,**内核(Kernel)**是一个重要的概念,它负责执行代码和处理用户输入。具体来说,内核是一个与用户的代码执行环境,它连接到Jupyter Notebook,以便处理用户的代码请求并返回结果。

虚拟环境的使用

cmd中

创建虚拟环境

pip virtualenv 这个要自己下载

virtualenv -p python解释器路径  名字(虚拟环境的名字)# -p python解释器路径       # 虚拟环境使用指定版本的python解释器
# 例:virtualenv -p D:\Python\Python39\python.exe env# --system-site-packages    # 指定虚拟环境继承系统的三方库
# 添加这个参数:检索库的时候,在当前虚拟环境找不到,会到系统的三方库中查找
# 不加这个参数:检索库的时候,只会在当前的虚拟环境中查找
# 例:virtualenv --system-site-packages env# 注意:通过系统python环境创建虚拟环境的时候,并不会将系统python环境中安装的第三方库安装到虚拟环境中

创建虚拟环境

1、创建项目文件夹
2、cmd命令行工具,进入到项目文件夹
3、执行命令:
virtualenv env_name
# 如:virtualenv env

激活虚拟环境

# cmd命令行工具,进入到虚拟环境下的Scripts目录
# 执行命令:
activate  或者 activate.bat# 执行之后,可以看到cmd命令工具中的路径前面多了一个标识:(env_name)
# 例:(env) C:\Users\Administrator\Desktop\MyPro02\env\Scripts>
# 此时,就是进入到了虚拟环境中,接下来所有的操作都是在当前虚拟环境中

操作虚拟环境

pip install requests# 如果不激活创建的虚拟环境,库会被安装到全局环境;# 激活虚拟环境后,则会安装在虚拟环境中python test.py# 使用虚拟环境中的python解释器执行test.py文件# 如果test.py文件中导入了某个包,会优先到虚拟环境中去查找相关的包

退出虚拟环境

# cmd命令行工具,进入到虚拟环境下的Scripts目录
# 执行命令
deactivate 或者 deactivate.bat# 退出虚拟环境之后,cmd命令工具中的路径前面的标识(env_name)会消失

删除虚拟环境

直接删除虚拟环境的文件夹

conda

conda常用的代码

conda -V                                        # 查看版本(V是大写)
conda create -n env_name python=3.9             # 创建python虚拟环境(指定python版本)
conda create -n env_name2 --clone env_name1     # 克隆虚拟环境
conda create -n env_name python=3.9 包名=x.x    # 创建虚拟环境的同时安装指定版本的三方库
conda create -p /projects/envs/myenv python=3.9 #在指定的路径下创建虚拟环境conda activate env_name                         # 切换/激活虚拟环境,Linux系统前面要加source
conda deactivate                                # 退出虚拟环境conda config --show                             # 查看虚拟环境默认位置
conda install 包名=version                      # 在base环境中安装包
conda install -n env_name 包名                  # 在指定虚拟环境安装包
activate env_name                               # 激活虚拟环境,Linux系统前面要加source
conda remove -n env_name --all                  # 移除虚拟环境及所有包
conda remove env_name 包名                      # 移除指定虚拟环境中的某个包
conda env list                                  # 查看虚拟环境列表
conda list                                      # 查看base环境包列表

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

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

相关文章

基于nginx的灰度发布解决方案

Nginx 在灰度发布中可以看作是一个精确的流量调度员,它充当着客户端与后端服务器之间的中介。通过配置好的规则,Nginx 会将用户请求智能地引导到不同版本的服务上。这样,Nginx 可以根据具体需求灵活地分配流量,确保新版本逐步推向…

网络安全法与等级保护 PPT 精华汇总

资源描述 本资源文件为《网络安全法与等级保护》的PPT精华汇总,内容涵盖了网络安全法与等级保护的总体框架及相关标准规范。该PPT详细介绍了网络安全法与等级保护的各个章节和条款,并提供了基础类和应用类的相关标准文件,帮助读者全面了解和…

uni-app开发安卓和iOS 打包流程(云打包)

首先讲一下安卓打包的流程,之后再说ios。打包安卓和iOS打包的流程有些不同,安卓打包相对来说比较简单,而iOS打包需要更多的准备工作,如申请开发者账号、生成证书等。 一、安卓打包 1、安卓打包直接在window电脑上就可以操作,打开hbuilderx,找到你的项目选中,然后点击发…

摄像头应用编程(四):ARM Linux LCD实时预览UVC摄像头画面

文章目录 1、前言2、环境介绍3、步骤4、应用程序编写4.1、lcd初始化4.2、摄像头初始化4.3、jpeg解码4.4、开启摄像头4.5、完整的程序如下 5、测试5.1、编译应用程序5.2、运行应用程序 6、总结 1、前言 本次应用程序主要针对支持MJPEG格式输出的UVC摄像头。 2、环境介绍 rk35…

蓝桥与力扣刷题(蓝桥 k倍区间)

题目:给定一个长度为 N 的数列,A1,A2,⋯AN​,如果其中一段连续的子序列 Ai,Ai1,⋯Aj( i≤j ) 之和是 K 的倍数,我们就称这个区间[i,j] 是 K 倍区间。 你能求出数列中总共有多少个 K 倍区间吗? 输入描述 第一行包含两…

json介绍、python数据和json数据的相互转换

目录 一 json介绍 json是什么? 用处 Json 和 XML 对比 各语言对Json的支持情况 Json规范详解 二 python数据和json数据的相互转换 dumps() : 转换成json loads(): 转换成python数据 总结 一 json介绍 json是什么? 实质上是一条字符串 是一种…

PAT乙级真题 / 知识点(1)

引言: 起初,报PAT是伙伴推荐。但在报名路途中,有朋友说,花时间到这上面不值得,还有学长说没听过,野鸡杯。 我一笑而过,我可能就是偏执,我就是想报。随着刷真题,我的基础…

单细胞分析(20)——inferCNV分析

InferCNV分析笔记 1. 分析目标 InferCNV(Inference of Copy Number Variations)是一种基于单细胞转录组数据推断**拷贝数变异(CNV)**的方法,推测其基因组变异情况。 2. 数据准备 2.1 载入数据 library(Seurat) set…

C++:多态与虚函数

1.虚函数,在函数前加virtual即可。有虚函数时,父类指针指向父类对象时就会使用父类的成员,指向子类对象时就可以使用子类成员,进而我们引入了多态的概念。 2.多态:父类指针指向子类的对象,通过父类指针调用…

WSL下使用git克隆失败解决

WSL默认nat模式,别动了防火墙放行,见图1git导入[bash1],ip为你wsl上linxu通过ifconfig获取的本机ip,端口对好某alcsh软件开启tun模式【经过测试,不开也行】应该成了,如果不行,修改.wslconfig为下…

开放鸿蒙OpenHarmony 5.0.0 Release 兼容性测试实战经验分享

OpenHarmony 5.0版本的发布时间是2024年12月20日至21日。这个版本带来了许多新特性和改进。现在5.0出了两个release 版本,分别是5.0.0和5.0.1。 就在5.0版本发布不到2周的时间内,2025年01月01日起,不支持新产品基于老分支(OpenHar…

C++中explicit关键字的含义以及用法

在C中,explicit关键字用于修饰构造函数和转换运算符(C11起),防止编译器进行隐式类型转换,要求必须显式调用构造函数或转换操作。以下是其核心用法和示例: 1. 修饰构造函数 用途 禁止隐式构造对象&#xf…

Oracle OCP认证考试考点详解083系列01

题记: 本系列主要讲解Oracle OCP认证考试考点(题目),适用于19C/21C,跟着学OCP考试必过。 1. 第1题: 题目 解析及答案: 关于自动工作量存储库(AWR)快照,以下哪三个选项…

从DNS到TCP:DNS解析流程和浏览器输入域名访问流程

1 DNS 解析流程 1.1 什么是DNS域名解析 在生活中我们会经常遇到域名,比如说CSDN的域名www.csdn.net,百度的域名www.baidu.com,我们也会碰到IP,现在目前有的是IPV4,IPV6。那这两个有什么区别呢?IP地址是互联网上计算机…

《2025软件测试工程师面试》接口测试篇

基础概念 什么是接口测试? 接口测试是测试系统组件间接口的一种测试,主要用于检测外部系统和内部系统之间以及各个子系统之间的交互点。测试的重点是检查数据的交换、传递和控制管理的过程,以及系统间的相互逻辑依赖关系等。 接口测试的优势是什么? 接口测试具有规范性与扩…

【PHP脚本语言详解】为什么直接访问PHP文件会显示空白?从错误示例到正确执行!

前言 作为一名开发者,你是否曾经遇到过这样的问题:写了一个PHP脚本,放到服务器根目录后,直接通过file:///路径访问却显示空白页面?而换成http://localhost却能正常显示?这篇文章将带你深入理解PHP脚本语言…

word转换为pdf后图片失真解决办法、高质量PDF转换方法

1、安装Adobe Acrobat Pro DC 自行安装 2、配置Acrobat PDFMaker (1)点击word选项卡上的Acrobat插件,(2)点击“首选项”按钮,(3)点击“高级配置”按钮(4)点…

基于PyTorch的深度学习2——逐元素操作,归并,比较,矩阵

以下为部分逐元素操作代码实例。 import torcht torch.randn(1, 3) t1 torch.randn(3, 1) t2 torch.randn(1, 3)#t0.1*(t1/t2) torch.addcdiv(t, 0.1, t1, t2)#计算sigmoid torch.sigmoid(t)#将t限制在[0,1]之间 torch.clamp(t,0,1)#t2进行就地运算 t.add_(2) 归并操作一般…

线程池的工作流程

线程池的工作流程主要包括任务提交、线程分配、任务执行和线程回收等环节,以下是对其详细的描述: 任务提交 当有任务需要执行时,用户通过线程池提供的提交方法,如execute()或submit()方法,将任务(通常是实现…

C++20 标准化有符号整数:迈向更可预测的整数运算

文章目录 一、背景:为什么需要标准化?二、2 的补码:原理与优势(一)2 的补码原理(二)2 的补码的优势 三、C20 的变化:明确 2 的补码四、如何利用这一特性优化代码(一&…