首页 > 解决方案 > GnuRadio:在子目录中组织 OOT 模块 python 代码

问题描述

我使用 gr_modtool 将 python 中的自定义块添加到 OOT 模块。看来我编写的所有源 python 都必须驻留在 gr-my_oot_module/python 目录中。我将编写大量分布在许多 python 文件中的代码。我想将这些文件组织到 gr-my_oot_module/python 下的子目录中(大概)。简单地创建这些目录并将代码放在那里不会导致安装成功。

将我为此模块编写的 python 文件组织到子目录中的正确方法是什么?

进一步来说:

  1. 我通过 gr_modtool 添加了一个块。相关的 python 文件放在 python 目录中。
  2. 然后我将该 .py 文件移动到 python/ 下的子目录 (sub_dir) 中。
  3. 我修改了 python 目录下的 init.py 和 CMakeLists.txt 以反映子目录位置,然后进行了安装。

该块出现在 GRC 中。当我尝试使用它时,它会抱怨

File "/home/my_name/devel/gnuradio3_8/lib/python3.6/dist-packages/my_module/__init__.py"
 from .sub_dir.sub_dir_test_blk import sub_dir_test_blk
 ModuleNotFoundError: No module named 'my_module.sub_dir' –

标签: pythongnuradio

解决方案


没错,Python 代码位于 python/. 然后,您应该使用gr_modtool add添加 GNU Radio python 块。这也会将它们添加到 CMakeLists.txt 中,从而确保它们在安装过程中被安装。

不,只是将文件放在子目录中并不会使它们成为已安装模块的一部分。这与任何其他 python 代码没有什么不同。如果您希望事物成为模块的一部分,则需要将它们放在__init__.py. python.org 教程是你的朋友!


推荐阅读