首页 > 其他分享 >解决conda环境包冲突问题

解决conda环境包冲突问题

时间:2024-10-16 13:32:20浏览次数:4  
标签:python3.10 lib SITE conda 冲突 解决 home lunyu USER

当我们将一个包安装到我们指定的虚拟环境中时,我们可能会发现它们会被安装到同一个目录中,并且不同版本的这些包之间会存在冲突。此外,我们可能会获取到不属于我们创建的环境的包信息。
首先,我们需要知道,如果USER_SITE存在,所有的包都会被安装在其中,这就是为什么会导致版本冲突的原因。
要解决这个问题,首先我们需要使用下面的命令来查看是否存在可能导致冲突的目录。

python -m site

然后我们会看到下面的输出:

sys.path = [
    '/home/lunyu',
    '/home/lunyu/miniconda3/envs/test/lib/python310.zip',
    '/home/lunyu/miniconda3/envs/test/lib/python3.10',
    '/home/lunyu/miniconda3/envs/test/lib/python3.10/lib-dynload',
    '/home/lunyu/miniconda3/envs/test/lib/python3.10/site-packages',
]
USER_BASE: '/home/lunyu/.local' (doesn't exist)
USER_SITE: '/home/lunyu/.local/lib/python3.10/site-packages' (doesn't exist)
ENABLE_USER_SITE: True

如果我们看到这样的结果:

  • USER_BASEUSER_SITE都不存在。

  • ENABLE_USER_SITE等于True

    我们不禁用ENABLE_USER_SITE, 否则会出现莫名奇妙的问题。

  • sys.path中没有USER_SITE对应的路径。

那么这个的环境满足我们的需求,即这个环境的包都会被独立安装。
如果我们有USER_BASEUSER_SITE存在,我们应该删除它们。

rm -rf /home/lunyu/.local

rm -rf /home/lunyu/.local/lib/python3.10/site-packages

QA

ERROR: Could not install packages due to an OSError: [Errno 13] Permission denied: '/usr/local/lib/python3.10'

问题复现:

在我们设置并sourceexport PYTHONNOUSERSITE=1来禁用ENABLE_USER_SITE并获取如下的站点信息后:

sys.path = [
    '/home/lunyu',
    '/home/lunyu/miniconda3/envs/test/lib/python310.zip',
    '/home/lunyu/miniconda3/envs/test/lib/python3.10',
    '/home/lunyu/miniconda3/envs/test/lib/python3.10/lib-dynload',
    '/home/lunyu/miniconda3/envs/test/lib/python3.10/site-packages',
]
USER_BASE: '/home/lunyu/.local' (exists)
USER_SITE: '/home/lunyu/.local/lib/python3.10/site-packages' (doesn't exist)
ENABLE_USER_SITE: False

当我们任意安装一个包(例如wget)时:

pip install wget

我们得到如下的错误信息:

ERROR: Could not install packages due to an OSError: [Errno 13] Permission denied: '/usr/local/lib/python3.10'
Consider using the --user option or check the permissions.

问题解决:

如果我们按照它告诉我们的命令运行:

pip install wget --user

它可以成功安装wget,但 我们会遇到另一个问题,即当我们想要检查安装情况时,我们什么也得不到。

pip show wget

输出结果是:

WARNING: Package(s) not found: wget

情况变得更糟了,我们知道包被安装在某个地方(可能是/usr/local/lib/python3.10,我们不确定具体位置),但我们无法获取该包的信息。

要解决这个问题,我们需要:

  • 启用ENABLE_USER_SITE,将其设置为True:

    设置并source export PYTHONNOUSERSITE=0

  • 删除USER_BASE,使其不存在。

  • 重新启动终端以确保所有设置都已应用。

标签:python3.10,lib,SITE,conda,冲突,解决,home,lunyu,USER
From: https://www.cnblogs.com/lunyu/p/18469727

相关文章

  • QT打包exe(含错误解决方法)
    打包工具windeployqt.exe运行报错QT5core库链接有问题把打包工具路径下的libstdc++-6.dll文件粘贴到目标路径下(可以看到两个文件的大小是有差别的,具体原因未知)参考https://blog.csdn.net/hanhui22/article/details/109595193......
  • 64页精品PPT | 汽车经销商数据应用解决方案
    汽车经销商正面临前所未有的盈利能力挑战。从18年起,传统燃油车汽车行业开始步入低速增长阶段,卖车已经挣不到钱,利润往往来自任务完成的厂家返利;新兴的直营模式的出现,冲击了传统授权经销的方式,疫情让这种情况“雪上加霜”。该资料共64页可编辑PPT格式,本文重点展现PPT整体......
  • KCD81RUG7T68 SSD:企业级存储解决方案的卓越选择
    在当今数据驱动的商业环境中,选择一款可靠且高效的企业级SSD至关重要。KCD81RUG7T68SSD凭借其出色的性能和高可靠性,成为众多企业用户的首选。1.卓越的读写性能KCD81RUG7T68SSD采用先进的NAND闪存技术,提供高达XXMB/s的顺序读写速度,能够满足高负载应用和数据密集型任务的需......
  • 解决网速慢的问题
    一、NAT条目数的问题shipnatstatistics查看条目数shipnattran*查看异常的连接数条目写acl策略,限制相应的端口tcp连接clearipnattran*二、网络设备cpu过高,及接口下是否有error和crc记数CPU问题:shprocessescpu|exclude0.00观察那个服务或进程1.http的开启......
  • 阿里面试:如何解决Redis热点Key问题? (按此作答,拿 60W年薪)
    文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完成职业升级,薪......
  • 积木链无代码开发平台是怎么解决系统间的数据孤岛问题的?
    什么是数据孤岛?数据孤岛是指在企业或组织中,相互独立的信息系统或数据存储之间无法进行有效的数据共享和交互,从而形成一个个孤立的数据“岛屿”。企业数据孤岛的产生怎么形成的?首先,从技术层面来说,可能原因是不同系统采用不同的数据格式和存储方式,导致数据难以整合。例如,一......
  • CORS代表什么以及它解决什么问题?
    CORS代表跨域资源共享(Cross-OriginResourceSharing),它是一种Web浏览器的安全机制,用于控制一个网页中的应用程序从哪些源(即域)可以加载资源。CORS的主要目的是解决跨域问题,即在不同源之间进行资源请求和数据传输时的安全限制。在现代Web开发中,由于浏览器的同源策略,前端和后端通......
  • 解决scanf遇空格停止
    方法1:#include<stdio.h>intmain(){charstr[80];scanf("%[^\n]",str);//读到'\n'结束读取printf("%s",str);return0;}%[^\n]读到'\n'结束读取%[^:]读到:结束读取方法2:#include<stdio.h>intmai......
  • socket实现简单ssh服务(解决socket粘包)
    1.服务端importsocket,osserver=socket.socket()server.bind(('localhost',22222))server.listen()whileTrue:conn,addr=server.accept()print("newconn:",addr)whileTrue:data=conn.recv(1024)ifnotdata:......
  • vue3使用pinia仓库解构赋值响应式丢失的解决方式
    代码storeimport{defineStore}from"pinia";import{ref}from"vue";exportconstuseMyTestStore=defineStore('mytestStore',()=>{//stateconstcount=ref(0);constcount2=ref(1);constincrement2......