python - GnuRadio:在子目录中组织 OOT 模块 python 代码
问题描述
我使用 gr_modtool 将 python 中的自定义块添加到 OOT 模块。看来我编写的所有源 python 都必须驻留在 gr-my_oot_module/python 目录中。我将编写大量分布在许多 python 文件中的代码。我想将这些文件组织到 gr-my_oot_module/python 下的子目录中(大概)。简单地创建这些目录并将代码放在那里不会导致安装成功。
将我为此模块编写的 python 文件组织到子目录中的正确方法是什么?
进一步来说:
- 我通过 gr_modtool 添加了一个块。相关的 python 文件放在 python 目录中。
- 然后我将该 .py 文件移动到 python/ 下的子目录 (sub_dir) 中。
- 我修改了 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' –
解决方案
没错,Python 代码位于 python/. 然后,您应该使用gr_modtool add
添加 GNU Radio python 块。这也会将它们添加到 CMakeLists.txt 中,从而确保它们在安装过程中被安装。
不,只是将文件放在子目录中并不会使它们成为已安装模块的一部分。这与任何其他 python 代码没有什么不同。如果您希望事物成为模块的一部分,则需要将它们放在__init__.py
. python.org 教程是你的朋友!
推荐阅读
- php - 在 codeigniter 中更改搜索项 url 和路由
- service - Prometheus 多个微服务实例
- c++ - WinPcap 创建空的 .pcap 文件
- java - 声纳中 InsufficientBranchCoverage 的 @SupressWarnnings 不起作用
- python - 为什么此调用不需要定义的 2 个参数?
- axapta - 维度查找挂起 AX 客户端?
- ansible - 如何将“parse_cli_textfsm”更改为引用 Ansible 角色文件夹中的模板文件夹?
- jquery - 在 ForEach 循环 Laravel 回复系统中防止我的 jQuery 循环
- python - 我可以在 conftest.py 中定义固定装置以外的功能吗
- php - 为什么我的 OnSelect 事件没有相应地触发