利用conda虚拟环境的激活和停用脚本设置opencv

PYTHONPATH的顺序非常重要,不要轻易修改设置~/.bashrc里边的PYTHONPATH.

本文介绍一种方式,在虚拟环境激活的时候开启PYTHONPATH的设置,关闭时候恢复原来的设置,避免冲突。

首先进入您的虚拟环境的目录,找到 etc/conda/activate.d/ 和 etc/conda/deactivate.d/ 目录。

在 activate.d 目录中,创建一个脚本(例如 env_vars.sh):

#!/bin/sh
export OLD_PYTHONPATH=$PYTHONPATH
export PYTHONPATH=/path/to/your/env/python3.8/site-packages/:$PYTHONPATH

在 deactivate.d 目录中,创建一个脚本(例如 env_vars.sh):

#!/bin/sh
export PYTHONPATH=$OLD_PYTHONPATH
unset OLD_PYTHONPATH

这样,每当您激活 audio2 环境时,它会将正确的路径添加到 PYTHONPATH 的前面。当您停用环境时,它会还原原始的 PYTHONPATH。

请确保这两个脚本都是可执行的,您可以使用下边的命令来实现。

chmod +x script_name.sh

以下是发现问题的过程记录:

  1. PYTHONPATH放在第二位就不起效果吗?必须放在第一位才有效果?
(base) hello@hello-desktop:~$ echo $PYTHONPATH
/usr/local/lib/python3.10/site-packages/:/home/hello/mambaforge/envs/audio2/opencv/lib/python3.8/site-packages/:
(base) hello@hello-desktop:~$ python -c "import cv2; print(cv2.__version__)"
4.6.0
(base) hello@hello-desktop:~$ conda activate audio2
(audio2) hello@hello-desktop:~$ python -c "import cv2; print(cv2.__version__)"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/local/lib/python3.10/site-packages/cv2/__init__.py", line 181, in <module>
    bootstrap()
  File "/usr/local/lib/python3.10/site-packages/cv2/__init__.py", line 112, in bootstrap
    load_first_config([
  File "/usr/local/lib/python3.10/site-packages/cv2/__init__.py", line 109, in load_first_config
    raise ImportError('OpenCV loader: missing configuration file: {}. Check OpenCV installation.'.format(fnames))
ImportError: OpenCV loader: missing configuration file: ['config-3.8.py', 'config-3.py']. Check OpenCV installation.
(audio2) hello@hello-desktop:~$ 
  1. 确实是只放在第一位才有效果,经过调整顺序之后,可以观察到虚拟环境audio2可以使用opencv,而base环境无法使用opencv.
(base) hello@hello-desktop:~$ echo $PYTHONPATH
/home/hello/mambaforge/envs/audio2/opencv/lib/python3.8/site-packages/:/usr/local/lib/python3.10/site-packages/:
(base) hello@hello-desktop:~$ python -c "import cv2; print(cv2.__version__)"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/home/hello/mambaforge/envs/audio2/opencv/lib/python3.8/site-packages/cv2/__init__.py", line 181, in <module>
    bootstrap()
  File "/home/hello/mambaforge/envs/audio2/opencv/lib/python3.8/site-packages/cv2/__init__.py", line 112, in bootstrap
    load_first_config([
  File "/home/hello/mambaforge/envs/audio2/opencv/lib/python3.8/site-packages/cv2/__init__.py", line 109, in load_first_config
    raise ImportError('OpenCV loader: missing configuration file: {}. Check OpenCV installation.'.format(fnames))
ImportError: OpenCV loader: missing configuration file: ['config-3.10.py', 'config-3.py']. Check OpenCV installation.
(base) hello@hello-desktop:~$ conda activate audio2
(audio2) hello@hello-desktop:~$ python -c "import cv2; print(cv2.__version__)"
4.6.0
(audio2) hello@hello-desktop:~$ 
  1. . 开启本文介绍的虚拟环境激活和停用设置之后,两个环境都可以使用各自的opencv. 最后的效果:
(base) hello@hello-desktop:~$ conda activate audio2
(audio2) hello@hello-desktop:~$ python -c "import cv2; print(cv2.__version__)"
4.6.0
(audio2) hello@hello-desktop:~$ conda deactivate 
(base) hello@hello-desktop:~$ python -c "import cv2; print(cv2.__version__)"
4.6.0

附录:
目前我的配置

  1. 激活/home/hello/mambaforge/envs/audio2/etc/conda/activate.d
#!/bin/sh
export OLD_PYTHONPATH=$PYTHONPATH
export PYTHONPATH=/home/hello/mambaforge/envs/audio2/opencv/lib/python3.8/site-packages/:$PYTHONPATH
export OLD_LD_LIBRARY_PATH=$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/home/hello/mambaforge/envs/audio2/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/home/hello/mambaforge/envs/audio2/opencv/lib/:$LD_LIBRARY_PATH
  1. 停用/home/hello/mambaforge/envs/audio2/etc/conda/deactivate.d
#!/bin/sh
export PYTHONPATH=$OLD_PYTHONPATH
unset OLD_PYTHONPATH
export LD_LIBRARY_PATH=$OLD_LD_LIBRARY_PATH
unset OLD_LD_LIBRARY_PATH
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 这个错误提示说明你的程序无法找到 OpenCV 的配置文件。OpenCV 的配置文件通常是 opencvconfig.cmake 或 opencv-config.cmake。如果你的系统中没有安装 OpenCV,或者安装的版本不正确,就会出现这个错误。要解决这个问题,你需要确保已经正确安装了 OpenCV 并且版本号正确。如果你已经安装了 OpenCV,但仍然遇到这个问题,那么你可以检查一下 OpenCV 的安装目录,看看这些配置文件是否存在,如果不存在,你可以手动创建一个。 ### 回答2: 这个错误信息提示在编译运行代码时,出现了无法找到名为 "opencvconfig.cmake" 或 "opencv-config.cmake" 提供的软件包配置文件。 opencv 是一款广泛使用于计算机视觉领域的开源库,其中包含了很多图像处理和计算机视觉相关的函数和工具。在编译运行代码时,如果需要调用 opencv 提供的库函数,就需要通过这两个配置文件来告诉编译器和系统如何查找和链接这些函数库。 如果提示找不到这两个文件,可能有以下几个原因: 1. 没有正确安装 opencv。在编译运行代码之前,需要先安装 opencv 库,并确保安装的版本和文件路径正确。 2. 文件路径没有配置正确。如果已安装 opencv,但在编译运行代码时仍然提示无法找到配置文件,则可能是文件路径没有正确配置。需要检查项目的配置文件、环境变量等设置是否正确。 3. 编译器不支持 opencv 库。某些编译器可能不支持 opencv 库,需要更换支持 opencv 的编译器,或者手动配置链接选项。 解决这个问题的方法是根据错误提示找到缺失的配置文件,并确保 opencv 库已正确安装和配置。如果仍然无法解决,可以根据具体情况逐步排查原因,并更改相关设置,以确保代码能够正确编译和运行。 ### 回答3: 这个错误提示是由于在使用CMake构建项目时,项目无法找到名为"opencvconfig.cmake"或"opencv-config.cmake"的OpenCV配置文件,无法继续进行编译。要解决这个错误,需要检查以下几个问题: 1. Opencv是否已经正确地安装在系统中,如果是,那么它的安装路径是否已经加入到了系统的环境变量中,如果没有,那么需要手动设置系统环境变量。 2. 检查CMakeLists.txt文件,是否正确地设置OpenCV的依赖库路径,如果没有,需要在该文件中添加配置。 3. 如果第一步和第二步都没有问题,那么需要检查一下OpenCV的版本号是否和当前项目中使用的版本号一致,如果不一致,那么需要卸载之前的版本并安装当前版本。 4. 如果以上三个步骤都没有解决问题,那么可以尝试在终端中输入sudo apt-get update && sudo apt-get upgrade进行系统更新。 总之,这个错误的出现通常与OpenCV的配置有关,需要检查安装路径、版本号、依赖库路径等方面,找到问题所在并逐一解决。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值