为何Conda环境安装GNU Radio 3.10却调用系统3.8版本?
在多用户Ubuntu 20.04系统上,系统已预装GNU Radio 3.8。因需使用依赖3.10版本的软件,按照《推荐GNU Radio Conda安装指南》创建本地radioconda环境:
(base) me@jk4:~$ conda create -n radioconda -c conda-forge -c ryanvolz --only-deps radioconda
但激活环境后运行gnuradio-companion,启动的仍是系统的3.8版本:
(radioconda) me@jk4:~/Projects$ gnuradio-companion <<< Welcome to GNU Radio Companion 3.8.1.0 >>>
确认执行的是conda环境内的程序:
(radioconda) me@jk4:~/Projects$ which gnuradio-companion /home/me/mambaforge/envs/radioconda/bin/gnuradio-companion
直接运行环境内二进制文件依然启动3.8版本,且环境文件夹内存在大量3.10相关文件、无3.8文件。但在未预装GNU Radio的个人笔记本上创建相同环境,可正常启动3.10版本:
(radioconda) me@mymachine:~$ gnuradio-companion <<< Welcome to GNU Radio Companion 3.10.7.0 >>>
1. 调整动态库加载顺序
系统的GNU Radio 3.8库可能被优先加载,导致conda环境的3.10版本无法生效:
- 激活环境后查看当前动态库路径:
echo $LD_LIBRARY_PATH
如果系统路径(如/usr/lib/x86_64-linux-gnu/)排在conda环境路径(如/home/me/mambaforge/envs/radioconda/lib)之前,手动调整顺序:
export LD_LIBRARY_PATH="/home/me/mambaforge/envs/radioconda/lib:$LD_LIBRARY_PATH"
之后再运行gnuradio-companion测试。若有效,可将该命令添加到conda环境的激活脚本,避免每次手动设置:
echo 'export LD_LIBRARY_PATH="/home/me/mambaforge/envs/radioconda/lib:$LD_LIBRARY_PATH"' >> /home/me/mambaforge/envs/radioconda/etc/conda/activate.d/env_vars.sh
2. 检查二进制文件依赖
验证gnuradio-companion实际依赖的库:
ldd /home/me/mambaforge/envs/radioconda/bin/gnuradio-companion | grep gnuradio
若输出指向系统/usr/lib/x86_64-linux-gnu/下的3.8版本库,说明是动态库加载顺序问题,按方法1调整即可。
3. 排查Python路径干扰
系统的PYTHONPATH可能指向3.8版本的GNU Radio模块,导致conda环境的Python优先加载系统库:
- 激活环境后查看PYTHONPATH:
echo $PYTHONPATH
若存在系统相关路径,临时取消设置:
unset PYTHONPATH
再运行gnuradio-companion测试。若有效,可在激活脚本中添加unset PYTHONPATH。
4. 重新创建完整环境
尝试不使用--only-deps参数,直接安装完整的radioconda环境,避免依赖缺失:
conda remove -n radioconda --all conda create -n radioconda -c conda-forge -c ryanvolz radioconda
激活环境后再次测试。
内容的提问来源于stack exchange,提问作者user1245262

