一、背景
之前在边缘盒子上实现一个加载海康摄像头的程序中遇到一个加载 .so 文件出错的问题,明明文件就在那里但就是报错找不到,哪怕是改成绝对路径也不行,搜遍全网尝试了N多种方法都没有成功,其中就怀疑过是不是使用的 conda 环境问题,改成使用系统自带的 python 能不能行(属于病急乱投医了,结果证明没用),于是就有了本文,记录一下踩坑过程。
二、创建虚拟环境
1. 使用系统自带 python
因为 Ubuntu20.04 自带 python3.8,所以一开始就直接开始创建虚拟环境。
python3 -m venv {env_name}
报错:
提示安装 python3.8-venv,安装又报错,提示没有这个包:
2. 安装 python3.9
使用系统自带 python 没法完成创建,试了apt换源、挂代理都没用,只能尝试重新安装 python,鉴于使用的rknn版本对应的是 python3.9,所以重新安装了 python3.9,本部分主要参考[1]。
(1)更新系统软件包
sudo apt update && sudo apt upgrade -y
(2)添加 Deadsnakes PPA
Deadsnakes PPA 提供多种版本的 python,包括最新版。
sudo apt install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
(3)安装 python
添加完成后就可以安装 python了,先检查一下是否可用。
sudo apt-cache policy python3.9
确认可用后开始安装 python 和相关模块,这些模块提供了构建虚拟环境和开发 python 扩展的必要支持。
sudo apt install python3.9 python3.9-venv python3.9-dev
(4)更改 python3 默认版本
因为要在新安装的 python3.9 上配置虚拟环境,所以要更改系统默认 python 版本为刚才安装的 python3.9,给不同 python 设置优先级[2]。
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 2
命令中的 python3 最好不要改成 python,否则后面调整版本会失败,最后的参数1, 2表示优先级, 数字越大优先级越高。
(5)调整默认版本
sudo update-alternatives --config python3
安装完成后重复步骤1,此时就可以成功创建虚拟环境了。
三、配置虚拟环境
1. 激活虚拟环境
虚拟环境创建完成后先进入我们的虚拟环境中。
source {your_venv}/bin/activate
2. 安装 packages
直接使用 pip(python自带)安装所需 packages,也可以安装 pip3,使用 pip3 install 安装,没啥区别。如果是手动下载的 package,想直接放到该虚拟环境中,可以先查看一下packages 的存放位置[3]。
pip show {package_name}
找到 site-packages,该目录就是 package 默认的存放位置。
以上都配置完成后就可以愉快的使用了。
3. 退出虚拟环境
deactivate
四、总结
本文是在调一个文件加载 bug 过程中偶然产生的,虽然这个方法并没有解决那个 bug,但这也是第一次用,就想着还是记录一下吧,万一哪天再用到也方便参考。
调了一天的bug最终居然是因为文件版本(x86-64)不对,一直提示 No such File,换了 arm64的就好了......
参考文献
[1] 在 Ubuntu 20.04 上安装 Python 3.12:详细教程_ubuntu20.04安装python3.12-优快云博客
[2] Ubuntu更改默认的python3版本_sudo update-alternatives --install python-优快云博客
[3] ubuntu下查看用pip安装的包的位置以及dist-packages和site-packages区别_ubuntu site package-优快云博客