运行 Python 脚本时出现“未找到模块”错误,如何解决?

运行 Python 脚本时出现“未找到模块”错误,如何解决?

前言

这很可能是一个之前被问过的问题,但遗憾的是,之前没有人能够提供确切的答案/解决方案。

实际问题

我正在尝试运行一个脚本,该脚本引用文件运行中引用的两个不同的文件。

运行包含以下脚本:

    #!/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

相关内容