当前位置: 首页 > news >正文

解决 conda新建虚拟环境只有一个conda-meta文件&conda新建虚拟环境不干净

像以前一样通过conda 新建虚拟环境时发现环境一团糟,首先新建虚拟环境

conda create -n newenv

这时候activate newenv,通过pip list,会发现有很多很多的包,都是我在其他环境用到的。但诡异的是,来到anaconda下env的目录,却发现newenv下只有一个conda-meta文件。这到底是为啥?

newenv下只有一个conda-meta文件

第一个问题,newenv下只有一个conda-meta文件,通过查找发现大家有一样的问题,并通过这个帖子找到了解决办法。
conda创建虚拟环境后文件夹中只有conda-meta文件夹
这个文字链接经常失效,附上网址http://t.csdnimg.cn/4JBNX

解决办法就是新建环境时加上python版本

conda create -n newenv python=3.8

这个问题解决之后,可以在newenv 下的lib/site-packages发现新装的包,但pip list仍然有巨多的以前安装过的包,这也就是conda 虚拟环境混乱的问题。

标题conda 虚拟环境混乱

通过查找,发现了以下相似问题的帖子
使用Conda创建空的虚拟环境,pip list有很多其他的包
地址:http://t.csdnimg.cn/1Njl1
解决Conda 创建 Python 虚拟环境不纯净的问题
地址:http://t.csdnimg.cn/vdotR
由pip默认安装位置引起的bug
地址:http://t.csdnimg.cn/xITqW
pip总是定位到全局Python的pip路径中(无法定位到虚拟环境的pip)
地址:http://t.csdnimg.cn/TMwHb
很可惜,这些方法我都尝试了,还是没有解决我的问题,于是我通过

pip show packagename

查看pip list中那些包的位置,发现大部分包都在\anaconda3\lib\site-packages这个目录,也就是说,我新建的虚拟环境中会有\anaconda3\lib\site-packages所有的包,这样一来虚拟环境还有个啥用?环境都隔离不了?要知道在 Python 的虚拟环境中,通常不会直接引用主环境的 site-packages 目录。虚拟环境的设计初衷就是为了提供一个隔离的环境,其中只包含特定的库和版本,不受主环境中安装的库的影响。当激活虚拟环境时,Python 解释器会修改其内部的路径设置,以优先使用虚拟环境中的库。那么,为什么新建的虚拟环境看起来包含了主环境的所有包呢?可能的原因是什么?
经过一些猜测,有可能是环境变量的干扰: 如果系统的环境变量(如 PYTHONPATH)被设置为指向主环境的 site-packages 目录,这可能会导致在虚拟环境中也能访问到主环境中的包。
在windows系统中“我的电脑”,选择“属性”。点击“高级系统设置”。在系统属性窗口中,选择“环境变量”。在环境变量中,查找名为 PYTHONPATH 的变量。发现这个值正是\anaconda3\lib\site-packages,将这个路径删除之后,pip list终于干净了。
在这里插入图片描述
但我记得这个PYTHONPATH是在安装anaconda的时候设置的,为什么会影响到虚拟环境之间的包?原因还是没搞明白。

1.22更新:今天用我在实验室的电脑试了下,实验室的电脑新建虚拟环境是正常的,这时我查看电脑的环境变量,发现是没有设置PYTHONPATH的。这说明PYTHONPATH这个环境变量是引起虚拟环境混乱的首要原因。有问题的朋友可以去试试。

http://www.lryc.cn/news/287114.html

相关文章:

  • React16源码: React中的completeWork对HostText处理含更新的源码实现
  • 网络协议与攻击模拟_07UDP协议
  • 生命在于折腾——WeChat机器人的研究和探索
  • 融资项目——EasyExcel将Excel文件保存至数据库
  • 【Oracle】设置FGA(Fine-Grained Audit)细粒度审计
  • js vue调用activex ocx
  • Hbas简介:数据模型和概念、物理视图
  • uniapp css样式穿透
  • 【立创EDA-PCB设计基础完结】7.DRC设计规则检查+优化与丝印调整+打样与PCB生产进度跟踪
  • android 线程池的管理工具类
  • 编码风格之(5)GNU软件编码风格(3)
  • 8 种网络协议
  • Flash读取数据库中的数据
  • 如何写出规范优雅的代码
  • 【数据结构】链表(单链表与双链表实现+原理+源码)
  • 14027.ptp 控制流
  • 【昕宝爸爸小模块】深入浅出之为什么POI的SXSSFWorkbook占用内存更小
  • CentOS安装Flume
  • Qt 多次绘图
  • 设计模式介绍
  • linux 之 ln 命令
  • 【设计模式】张一鸣笔记:责任链接模式怎么用?
  • Vulnhub-dc4
  • MySQL45道练习题
  • HTML5和CSS3的新特性
  • 【MySQL】表列数和行大小限制详解
  • 算法基础学习|双指针算法
  • 4.远程登录服务
  • 代码随想录算法训练营第二十九天| 491.递增子序列、46.全排列、47.全排列 II
  • 基于若依的ruoyi-nbcio流程管理系统一种简单的动态表单模拟测试实现(五)