python - 在 ubuntu 上使用 pycharm 时导入 gnuradio
问题描述
我想在 Ubuntu 18.04 上从 PyCharm CE 2019.2 从 python 调用 gnuradio 3.8 中的块。Pycharm中设置的项目解释器是创建pycharm项目时创建的虚拟环境。我已经看到建议(如何在 pycharm 中导入模块?)添加如下一行:
/home/my_name/devel/gnuradio3_8/lib/python3.6/dist-packages
到解释器路径(在 File->Settings->Project:my_proj->Project Interpreter->Gear Symbol->Show All->Show Paths for Selected Interpreter 下)。
从 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
如果您已gnuradio
使用安装pybombs
,将有一个setup_env.sh
脚本~/devel/gnuradio3_8
,您可以从终端获取
$ source setup_env.sh
推荐阅读
- python - python lambda里面的for循环
- networking - 门铃和门铃记录有什么区别?
- microsoft-graph-api - 作业中的 NextLink 似乎不起作用
- omnet++ - 如何修复“未在此范围内声明”错误
- ios - ios应用程序是否必须注册功能才能在iTune上上传
- amazon-web-services - Amazon sagemaker 生命周期配置不起作用
- javascript - 在 React Native 中调整图像大小
- python - 为什么我的请求会话将数据视图丢失到 auth azure AD 中的另一个视图?
- flutter - FutureBuilder 中的 StreamBuilder
- fortran - Fortran 90 自动(?)分配可分配对象