在 Ubuntu 上使用 Pycharm 时导入 GNUrRadio



我想从python调用来自Ubuntu 18.04上的PyCharm CE 2019.2的gnuradio 3.8中的块。 在 Pycharm 中设置的项目解释器是在创建 pycharm 项目时创建的虚拟环境。 我看到了建议(如何在pycharm中导入模块?(添加如下行:

/home/my_name/devel/gnuradio3_8/lib/python3.6/dist-packages

到解释器路径(在文件->设置->项目:my_proj->项目解释器->齿轮符号->显示全部>显示所选解释器的路径(下(。

在python控制台中,当我尝试导入gnuradio块时,这会导致以下错误:

PyDev console: starting.
Python 3.6.8 (default, Oct  7 2019, 12:59:55) 
[GCC 8.3.0] on linux
import gnuradio
from gnuradio import blocks
Traceback (most recent call last):
File "/home/my_name/devel/gnuradio3_8/lib/python3.6/dist-packages/gnuradio/blocks/blocks_swig0.py", line 14, in swig_import_helper
return importlib.import_module(mname)
File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 658, in _load_unlocked
File "<frozen importlib._bootstrap>", line 571, in module_from_spec
File "<frozen importlib._bootstrap_external>", line 922, in create_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
ImportError: libgnuradio-blocks.so.3.8.0: cannot open shared object file: No such file or directory
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/my_name/devel/gnuradio3_8/lib/python3.6/dist-packages/gnuradio/blocks/__init__.py", line 32, in <module>
from .blocks_swig import *
File "/snap/pycharm-community/167/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 21, in do_import
module = self._system_import(name, *args, **kwargs)
File "/home/my_name/devel/gnuradio3_8/lib/python3.6/dist-packages/gnuradio/blocks/blocks_swig.py", line 24, in <module>
from .blocks_swig0 import *
File "/snap/pycharm-community/167/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 21, in do_import
module = self._system_import(name, *args, **kwargs)
File "/home/my_name/devel/gnuradio3_8/lib/python3.6/dist-packages/gnuradio/blocks/blocks_swig0.py", line 17, in <module>
_blocks_swig0 = swig_import_helper()
File "/home/my_name/devel/gnuradio3_8/lib/python3.6/dist-packages/gnuradio/blocks/blocks_swig0.py", line 16, in swig_import_helper
return importlib.import_module('_blocks_swig0')
File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
ModuleNotFoundError: No module named '_blocks_swig0'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/my_name/devel/gnuradio3_8/lib/python3.6/dist-packages/gnuradio/blocks/blocks_swig0.py", line 14, in swig_import_helper
return importlib.import_module(mname)
File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 658, in _load_unlocked
File "<frozen importlib._bootstrap>", line 571, in module_from_spec
File "<frozen importlib._bootstrap_external>", line 922, in create_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
ImportError: libgnuradio-blocks.so.3.8.0: cannot open shared object file: No such file or directory
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/snap/pycharm-community/167/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 21, in do_import
module = self._system_import(name, *args, **kwargs)
File "/home/my_name/devel/gnuradio3_8/lib/python3.6/dist-packages/gnuradio/blocks/__init__.py", line 36, in <module>
from .blocks_swig import *
File "/snap/pycharm-community/167/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 21, in do_import
module = self._system_import(name, *args, **kwargs)
File "/home/my_name/devel/gnuradio3_8/lib/python3.6/dist-packages/gnuradio/blocks/blocks_swig.py", line 24, in <module>
from .blocks_swig0 import *
File "/snap/pycharm-community/167/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 21, in do_import
module = self._system_import(name, *args, **kwargs)
File "/home/my_name/devel/gnuradio3_8/lib/python3.6/dist-packages/gnuradio/blocks/blocks_swig0.py", line 17, in <module>
_blocks_swig0 = swig_import_helper()
File "/home/my_name/devel/gnuradio3_8/lib/python3.6/dist-packages/gnuradio/blocks/blocks_swig0.py", line 16, in swig_import_helper
return importlib.import_module('_blocks_swig0')
File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
ModuleNotFoundError: No module named '_blocks_swig0'

我相信我已经安装了libgnuradio:

~/devel/gnuradio3_8/lib$ ls
cmake                            libgnuradio-qtgui.so.3.8.0
libgnuradio-analog.so            libgnuradio-qtgui.so.3.8.0.0
libgnuradio-analog.so.3.8.0      libgnuradio-runtime.so
libgnuradio-analog.so.3.8.0.0    libgnuradio-runtime.so.3.8.0
libgnuradio-audio.so             libgnuradio-runtime.so.3.8.0.0
libgnuradio-audio.so.3.8.0       libgnuradio-trellis.so
libgnuradio-audio.so.3.8.0.0     libgnuradio-trellis.so.3.8.0
libgnuradio-blocks.so            libgnuradio-trellis.so.3.8.0.0
libgnuradio-blocks.so.3.8.0      libgnuradio-uhd.so
libgnuradio-blocks.so.3.8.0.0    libgnuradio-uhd.so.3.8.0
libgnuradio-channels.so          libgnuradio-uhd.so.3.8.0.0
libgnuradio-channels.so.3.8.0    libgnuradio-utilities.so
libgnuradio-channels.so.3.8.0.0  libgnuradio-utilities.so.1.0.0git
libgnuradio-digital.so           libgnuradio-utilities.so.v1.0-compat-xxx-xunknown
libgnuradio-digital.so.3.8.0     libgnuradio-vocoder.so
libgnuradio-digital.so.3.8.0.0   libgnuradio-vocoder.so.3.8.0
libgnuradio-dtv.so               libgnuradio-vocoder.so.3.8.0.0
libgnuradio-dtv.so.3.8.0         libgnuradio-wavelet.so
libgnuradio-dtv.so.3.8.0.0       libgnuradio-wavelet.so.3.8.0
libgnuradio-fec.so               libgnuradio-wavelet.so.3.8.0.0
libgnuradio-fec.so.3.8.0         libgnuradio-zeromq.so
libgnuradio-fec.so.3.8.0.0       libgnuradio-zeromq.so.3.8.0
libgnuradio-fft.so               libgnuradio-zeromq.so.3.8.0.0
libgnuradio-fft.so.3.8.0         libuhd.so
libgnuradio-fft.so.3.8.0.0       libuhd.so.3.14.1
libgnuradio-filter.so            libvolk.so
libgnuradio-filter.so.3.8.0      libvolk.so.2.0
libgnuradio-filter.so.3.8.0.0    pkgconfig
libgnuradio-pmt.so               python2.7
libgnuradio-pmt.so.3.8.0         python3
libgnuradio-pmt.so.3.8.0.0       python3.6
libgnuradio-qtgui.so             uhd

导入 gnuradio 的正确方法是什么?

ImportError: libgnuradio-blocks.so.3.8.0: 無法打開共享目標檔案: 沒有這樣的文件或目錄

是的。我在通常的地方有 gnuradio3.7,3.8 在我的主目录下

您需要将已安装 gnuradio libs (~/devel/gnuradio3_8/lib( 的路径添加到LD_LIBRARY_PATH环境变量中。

我不熟悉pycharm,但是您可以从您的终端执行

$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/devel/gnuradio3_8/lib

然后从同一终端启动 pycharm 或将其添加到您的~/.bash_profile

如果您使用pybombs安装了gnuradio,则可以从终端获取~/devel/gnuradio3_8setup_env.sh脚本

$ source setup_env.sh

最新更新