前言
这很可能是一个之前被问过的问题,但遗憾的是,之前没有人能够提供确切的答案/解决方案。
实际问题
我正在尝试运行一个脚本,该脚本引用文件运行中引用的两个不同的文件。
运行包含以下脚本:
#!/bin/bash
if [ "$(whoami)" != "root" ]; then
echo "This script must be run as root (e.g. sudo)"
exit 1
else
(odr-dabmux demo.mux |
odr-dabmod -f /dev/stdout -g0 -m 1 -r 3200000 |
python2 demo.py)
fi
运行脚本时出现以下错误,我一直在尝试修复该错误:
./run: line 7: odr-dabmux: command not found
./run: line 8: odr-dabmod: command not found
Traceback (most recent call last):
File "demo.py", line 4, in <module>
from gnuradio import blocks
ImportError: No module named gnuradio
一开始我确定是第 7 行和第 8 行的错误,并决定解决ImportError: No module named gnuradio
因此我继续使用 sudo apt 安装了 gnuradio。现在可以在
/usr/include/gnuradio
以及
/usr/lib/python3/dist-packages/gnuradio
在获得正确的库之后,我再次运行它,但无济于事。我一直得到ImportError: No module named gnuradio
有人知道这里的问题是什么吗?任何帮助都将不胜感激!
好奇的话,demo.py 的内容如下:
# echo "Hello DAB" | nc -w0 -u 127.0.0.1 4321#!/usr/bin/env python2
# # pylint: disable=missing-docstring
from gnuradio import blocks
from gnuradio import gr
import osmosdr
SAMPLE_RATE = 3200000
BANDWIDTH = 1.75e6
class HackRFSink(gr.top_block):
def __init__(self):
gr.top_block.__init__(self, "Hackrf Dab Sink")
self.hackrf = osmosdr.sink(args="numchan=" + str(1) + " " + "hackrf=0")
self.hackrf.set_sample_rate(SAMPLE_RATE)
self.hackrf.set_center_freq(218.640e6, 0)
self.hackrf.set_freq_corr(0, 0)
self.hackrf.set_gain(14, 0)
self.hackrf.set_if_gain(47, 0)
self.hackrf.set_bb_gain(14, 0)
self.hackrf.set_antenna("", 0)
self.hackrf.set_bandwidth(BANDWIDTH, 0)
# echo "Hello DAB" | nc -w0 -u 127.0.0.1 4321
self.scaler = blocks.multiply_const_vcc((1, ))
self.infile = blocks.file_source(
gr.sizeof_gr_complex * 1,
"/dev/stdin",
False
)
self.connect((self.infile, 0), (self.scaler, 0))
self.connect((self.scaler, 0), (self.hackrf, 0))
def main():
transmitter = HackRFSink()
transmitter.start()
transmitter.wait()
if __name__ == '__main__':
if gr.enable_realtime_scheduling() != gr.RT_OK:
print("Error: failed to enable real-time scheduling.")
main()
编辑:odr-dabmux 和 odr-odr-dabmod 的错误已修复!仍然有问题ImportError: No module named gnuradio