解决ModuleNotFoundError: No module named ‘gnuradio‘

目录

  • 问题背景:
  • 遇到问题:
  • 原因总结:
  • (ง •_•)ง
  • **配置:**
    • ①虚拟机镜像(ubuntu,Linux系统的一种):ubuntu-18.04.5-desktop-amd64
    • ②python 2.7.17
    • ③GNURadio 3.7.11
  • 一、安装Python(命令默认2.7.17)
  • 二、安装GNURadio(命令默认3.7)
  • 三、安装[gr-mapper](https://github.com/gr-vt/gr-mapper)(用于py交互)和[gr-mediatools](https://github.com/osh/gr-mediatools)
    • 3.1 安装gr-mapper(非必须)
    • 3.2 安装gr-mediatools
  • *补充项(非必须)
    • 1编辑器
    • 2一些扩展包
  • 致谢以下博主的博客

问题背景:

为了用上自己搭好的GNURadio流图去产生数据集,因此需要跑下RML2016作者的数据集生成代码,弄懂步骤。另外因为在社区看到windows对GnuRadio的使用限制,无奈使用Linux系统(ubuntu就是Linux系统的一种)

遇到问题:

import gnuradio遇到以下报错问题
ModuleNotFoundError: No module named ‘gnuradio‘

原因总结:

①gnuradio没安装
②gr-mediatools没装好,这个包装好才能导入gnuradio模块

(ง •_•)ง

本文会不断完善,尽量以最少的可行步骤解决问题

最近更新:2021.5.24
更新内容:删除了不必要的安装步骤

配置:

①虚拟机镜像(ubuntu,Linux系统的一种):ubuntu-18.04.5-desktop-amd64

因为windows对使用gnuradio的限制,还是下了虚拟机VMware。然后下个Linux系统镜像就可以了。
解决ModuleNotFoundError: No module named ‘gnuradio‘_第1张图片

②python 2.7.17

③GNURadio 3.7.11

一、安装Python(命令默认2.7.17)

sudo apt-get install python
sudo apt-get install python-pip

二、安装GNURadio(命令默认3.7)

sudo apt-get update

如果失败(下面这种访问受限的情况)
解决ModuleNotFoundError: No module named ‘gnuradio‘_第2张图片
进行换源
在命令行中输入:

sudo gedit /etc/apt/sources.list

在上面打开的文件开头添加(中科大的源)

deb http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse

再来一次

sudo apt-get update

然后

sudo apt-get install gnuradio

三、安装gr-mapper(用于py交互)和gr-mediatools

在安装之前,先在终端输入:

sudo apt-get install cmake
sudo apt-get install libavcodec-dev libavformat-dev

swig安装

apt install swig

安装前先下载下面两个包(链接在上面名字处)
解决ModuleNotFoundError: No module named ‘gnuradio‘_第3张图片

3.1 安装gr-mapper(非必须)

这个安装包包含了接收机等模块的库。
如果只是要引入import gnuradio,那么请直接看3.2部分,这个模块可以不装。
如果是为了跑RML2016a作者的代码,那么这个环节是需要的,因为人家使用到了这部分包。
步骤如下
首先在linux的home目录下进行解压
解决ModuleNotFoundError: No module named ‘gnuradio‘_第4张图片
继续输入下面命令,进入该目录(可以一起全部黏贴的,不要一条条复制黏贴)。

cd gr-mapper-master
mkdir build 
cd build
cmake ../
make -k
sudo make install
sudo ldconfig

3.2 安装gr-mediatools

(import gnuradio的包所需)
步骤一模一样,将下载的文件解压到文件夹然后开始装

cd gr-mediatools-master
mkdir build
cd build
cmake ../
make -k
sudo make install
sudo ldconfig

如果遇到报错
解决ModuleNotFoundError: No module named ‘gnuradio‘_第5张图片
在gr-mediatools-master解压包的lib目录下找到
mediatools_audiosource_impl.cc文件,解决方案来源于该博主(前人种树后人乘凉,感激不尽,时间成本大大减少)。。
解决ModuleNotFoundError: No module named ‘gnuradio‘_第6张图片
找到

d_frame = avcodec_alloc_frame();

替换为

d_frame = av_frame_alloc();

解决ModuleNotFoundError: No module named ‘gnuradio‘_第7张图片
替换完后,记得再来一次前面的安装命令。
到此为止,顺利的话结束了(下面是安装过程的小截图)。
解决ModuleNotFoundError: No module named ‘gnuradio‘_第8张图片
现在,我们已经获得了该库(经过试验mapper不装也可以导入gnuradio的)
终端进入python环境测试下
解决ModuleNotFoundError: No module named ‘gnuradio‘_第9张图片
OK!如果上述都安装了,mapper和gnuradio的包都将会成功导入
解决ModuleNotFoundError: No module named ‘gnuradio‘_第10张图片

*补充项(非必须)

1编辑器

终端写代码可能不是很方便,我这里用jupyter notebook作为编辑器
安装方式如下

sudo python -m pip install --upgrade --force pip 
sudo pip install setuptools==33.1.1
sudo pip install jupyter

如果出现报错
ERROR: Cannot uninstall ‘pyzmq’. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

解决方案:

sudo pip install --ignore-installed pyzmq

接着在终端重设密码即可使用

python
from notebook.auth import passwd
passwd()

2一些扩展包

$ pybombs recipes add gr-recipes git+https://github.com/gnuradio/gr-recipes.git
$ pybombs recipes add ettus-pybombs git+https://github.com/EttusResearch/ettus-pybombs.git
sudo apt-get install pkg-config
sudo  apt-get install texlive-latex-recommended

(开源接收机)

sudo apt-get install gqrx-sdr
sudo pybombs install hackrf rtl-sdr gr-osmosdr osmo-sdr

WINSCP传输所需包

sudo apt install net-tools
sudo apt-get install openssh-server

开启远程服务所需命令

service sshd start

查看ip命令

ifconfig

一些需要管理员权限的命令所需(首次设置密码)

sudo passwd root

进入root权限

su root

致谢以下博主的博客

https://blog.csdn.net/qq_45103492/article/details/108449519

https://blog.csdn.net/u011441044/article/details/99442178

https://blog.csdn.net/universe_1207/article/details/108589944

你可能感兴趣的