【问题标题】:GnuRadio: organizing OOT module python code in sub-directoriesGnuRadio:在子目录中组织 OOT 模块 python 代码
【发布时间】:2020-01-03 03:55:41
【问题描述】:

我使用 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' –

【问题讨论】:

  • 是的,听起来sub_dir 不是一个模块。你做到了吗?
  • sub_dir 是一个目录。 “模块”是指“包”(即目录 sub_dir 包含 init.py 文件)吗?

标签: python gnuradio


【解决方案1】:

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

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

【讨论】:

  • 请将所有这些信息放入您的问题中,而不是在此处发表评论!
  • 完成--问题详情已扩展。
  • 经过进一步实验,似乎以下工作:1)以通常的方式通过 gr_modtool 创建一个新块 2)将关联的 .py 移动到 python/ 下所需的子目录 3)更新python/ 目录中的 CMakeLists.txt 文件以包含与新 .py 文件关联的子目录 4) 照常安装
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-06
  • 1970-01-01
  • 2021-11-16
  • 1970-01-01
  • 2018-01-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多