Ubuntu anaconda以管理员安装在root下,多用户使用 您所在的位置:网站首页 root环境下 Ubuntu anaconda以管理员安装在root下,多用户使用

Ubuntu anaconda以管理员安装在root下,多用户使用

2023-12-01 13:08| 来源: 网络整理| 查看: 265

后面发现实际上你安装在普通用户也有办法给root用户用。看需求吧

起因

因为对接java那边必须用java跑,他创建的文件夹有管理员权限,跑python需要管理员权限不然访问不了,, 最开始anaconda安装在用户下,而opencv编译安装后,用管理员跑python,竟然奇迹的好多函数出问题了,不用管理员一切正常,估计就是管理员权限的锅,具体咋解释我也说不清楚,干脆就把粗暴准备把anaconda以root用户安装了。

anaconda安装

要保证root用户安装的anaconda给普通用户使用 那么后续安装路径,需要安装在普通用户可以访问的目录下,比如/usr/local、/opt之类的

其次,普通用户登陆后,需要执行以下conda init 使conda的路径等系统环境变量信息写入当前用户的bashrc下 开始安装: 简单,要么su进入管理员安装或者加sudo

cd xxx sudo bash Anaconda3-2021.05-Linux-x86_64.sh

然后一直同意就ok了,注意修改改安装目录,默认是在root下,后面普通用户就没法儿用了。 如果最后没有同意conda init 就需要自己去.bashrc添加环境变量,,,但感觉没那么好, 或者xxx/anaconda3/bin/conda init bash,但麻烦所以记得一直yes就行。

将anaconda添加其他用户可使用。

比如安装在/usr/local下 普通用户执行:

/usr/local/anaconda3/bin/conda init bash

如果还是不行,可以看看这个设置用户组的,我还没试: https://blog.csdn.net/codedancing/article/details/103936542

安装在普通用户下的anaconda给root用

这个可能会遇到,,也说下解决方案吧,装在了普通用户下,环境都配好了,结果需要sudo权限运行脚本,而切换root之后,哪怕你给的anaconda的绝对路径跑,依然会找不到很多包,因为缺乏很多路径变量,所以要解决这个问题,办法在于给root用户添加环境变量,直接在root用户下运行即可:

sudo su #切换得到root用户下 #执行conda添加环境变量 /home/xxx/anaconda3/bin/conda init bash

参考 https://blog.csdn.net/u010510962/article/details/109508896

记录anaconda一大坑,就算装的时候谨慎添加环境变量,就算红着提示你的那块

否则后面编译一些东西的时候,如果被anaconda截胡了的话,就算anconda也有你编译时用到的动态库,因为它的环境变量更加靠前导致被截胡。如果添加了也不要担心,编译的时候注意被截胡没有,截了就调整环境变量顺序。 或者说你辛苦的调整好顺序,把冲突的动态库搜索路径提前到anaconda的前面,是的编译通过了,但是这里举一个例子: 见提前路径的处理 最后编译成功但是报错:

importerror dll load failed while importing cv2 the specified module could not be found 或者: File "xxx\Anaconda3\lib\importlib\__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) ImportError: DLL load failed while importing cv2: 找不到指定的程序。

原因在于激活的anaconda的base环境,每次运行会把自身的环境变量加在最前面,坑爹,你还改不动系统环境里面的配置。在这里插入图片描述

就这里面的,你把冲突的anaconda的下的mingw-w64删除,它会自动在添加回来,,在激活的anaconda环境中,也是如此,这个是硬伤,你安装时选不选add还是会有。

#自动anaconda激活的base下,只要运行程序就会添加在开头的环境变量,, C:\mysoft\Anaconda3;C:\mysoft\Anaconda3\Library\mingw-w64\bin;C:\mysoft\Anaconda3\Library\usr\bin;C:\mysoft\Anaconda3\Library\bin;C:\mysoft\Anaconda3\Scripts;

所以最后的解决方案吧: 比如我编译的opencv的python接口也就是cv2,我进到cv2的init脚本下: 添加:

#我遇到的冲突mingw-w64\bin,和自己下的mingw的bin下动态库冲突,所以,, os.environ['PATH'] = os.environ['PATH'].replace(r'xxxx\Anaconda3\Library\mingw-w64\bin;','')

只要导入cv2,我就把anaconda自动添加的环境变量里的mingw给干掉。 但这样如果有其他库用到了anaconda下自带的mingw,那就可能会出问题,暂时没遇到的就这样吧,遇到了就只能采取暴力解决方案,pip安装opencv-python,互相覆盖一两次就能用了,实际上就算pip装的把动态链接改到anaconda下了。但这样吧,可能会失去一些编译好不容易支持的特性,比如gstreamer,但貌似ffmpeg支持h264还是能用的,,,

所以最好的方式是,实际部署情况如果要用到编译opencv的话,就不用装anaconda,而是采取安装pyhthon一步步配环境就不会出问题了。。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有