安装mavlink遇到无法运行mavgenerate的问题

问题遇到的现象和发生背景

https://mavlink.io/en/getting_started/generate_libraries.html#mavgen
跟随mavlink安装教程完成准备工作之后
在打开mavgenerate.py时遇到了问题
在cmd中输入

python -m mavgenerate

报错如下

PS C:\Users\56905\mavlink> python -m mavgenerate
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "C:\Users\56905\mavlink\mavgenerate.py", line 44, in <module>
    from pymavlink.generator import mavgen
  File "C:\Users\56905\mavlink\pymavlink\generator\mavgen.py", line 26, in <module>
    from future import standard_library
  File "C:\Users\56905\AppData\Local\Programs\Python\Python312\Lib\site-packages\future\standard_library\__init__.py", line 65, in <module>
    import imp
ModuleNotFoundError: No module named 'imp'

直接在mavlink源文件双击mavgenerate.py也会闪退

操作环境、软件版本等信息

win11,Python312

我想要达到的结果

成功运行mavgenerate.py

安装一个python3.9的版本试试,可能是你的python312版本比较新mavlink版本不兼容。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

Python 3.10及更高版本中,imp模块已被移除
使用较低版本的Python(如Python 3.8或3.9)来运行mavgenerate.py

引用 皆我百晓生 小程序回复内容作答:
根据您提供的信息,问题可能是由于Python版本不兼容或缺少必要的依赖库导致的。您可以尝试以下几个解决方案:

  1. 检查Python版本:根据报错信息,您使用的是Python 3.12 版本。请注意,有些软件和库可能不兼容最新版本的Python。尝试使用较早版本的Python(例如,Python 3.7或Python 3.8)重新运行 mavgenerate.py。

  2. 安装缺失的依赖库:报错信息中提到缺少名为 'imp' 的模块。'imp' 是Python的内置模块,但它在Python 3.10+的版本中已弃用。尝试安装 'future' 库以解决此问题。在命令提示符中运行以下命令:

    pip install future
    

    这将安装 'future' 库。然后尝试重新运行 python -m mavgenerate 命令。

  3. 检查路径设置:确保您在命令提示符中的当前工作目录正确设置为 mavlink 源文件所在的位置。在命令提示符中使用 cd 命令切换到正确的目录后,再运行 python -m mavgenerate 命令。

  4. 更新 mavlink:尝试更新到最新的 mavlink 版本。您可以从 mavlink 官方网站下载最新的源代码,并重复安装过程。

如果上述方法无法解决问题,请考虑前往 mavlink 的官方论坛或问题跟踪系统寻求更详细的帮助,他们的开发者社区可能会提供特定于该库和版本的指导。

python3.9

参考结合GPT4.0、文心一言,如有帮助,恭请采纳。

ModuleNotFoundError: No module named 'imp'
ModuleNotFoundError:没有名为“imp”的模块
根据中文释义,分析是由于Python环境中的一些依赖项缺失或者安装顺序不正确导致的。

这是已经成功的实例解题思路,供你参考:
1、module包没安装
2、忘了import
3、没有__init__.py文件
4、package包的版本不对
5、自定义的包名与安装的包名相同,导致import包的时候导错了包
6、没设置PYTHONPATH或者
7、自建的module包所在路径不在PYTHONPATH下
8、不恰当的使用了相对导入

是包冲突了,没有这个包。

援引讯飞星火:
根据您提供的错误信息,问题出在Python 3.12中没有名为'imp'的模块。这是因为在Python 3.4及更高版本中,imp模块已被弃用,并在Python 3.10中被移除。您可以尝试以下方法解决这个问题:

  1. 降级Python版本到3.9或更低版本,这样应该可以正常运行mavgenerate.py。

  2. 如果您不想降级Python版本,可以尝试安装future库的替代品。在命令行中运行以下命令:

pip install futures

然后再次尝试运行mavgenerate.py。

参考gpt:
结合自己分析给你如下建议:

你的问题可能是由于你使用的Python版本和mavlink所需的Python版本不兼容导致的。imp模块是Python 2.x中的一个内置模块,用于访问导入机制的底层接口。在Python 3.x中,imp模块已经被弃用,建议使用importlib模块来代替。因此,你可能需要使用Python 2.x来运行mavgenerate.py,或者修改mavgenerate.py中的代码,将imp模块替换为importlib模块。
你也可以尝试使用pip安装pymavlink模块,以避免出现缺少依赖模块的问题。你可以在命令行中输入以下命令:
pip install pymavlink
或者,如果你有多个Python版本,你可以指定使用Python 2.x来安装:
pip2 install pymavlink

由于 future 库在 Python 3.12 中可能存在兼容性问题,您可以尝试使用一个较旧版本的 Python(如 Python 3.8 或 3.9),以避免这个问题。

自定义mavlink协议库
可以参考下


【C/C++/QT/ 移植/导入Mavlink V2.0/Mavlink V1.0教程】_新建程序添加mavlink_时间煮雨_MML的代码小世界的博客-CSDN博客 C/C++/QT/keil 移植/导入Mavlink V2.0/Mavlink V1.0教程使用mavlink库_新建程序添加mavlink https://blog.csdn.net/rbhhjjjhg/article/details/126706608

结合GPT给出回答如下请题主参考
根据提供的信息,无法运行mavgenerate可能是由以下原因导致:

  1. mavlink没有正确安装:请确保已经正确安装了mavlink并且添加了mavlink的路径到环境变量中。

  2. Python版本问题:mavlink需要使用Python 2.x版本。您需要检查您的Python版本是否正确。

  3. 没有安装mavlink工具包:mavgenerate是mavlink工具包的一部分,如果没有安装mavlink工具包,则mavgenerate也无法运行。您可以通过以下命令来安装mavlink工具包:

pip install --upgrade pymavlink
  1. 输入命令错误:请确保您输入的mavgenerate命令和参数正确。您可以参考mavlink官方文档中的说明。

  2. 系统权限问题:如果您在Linux或macOS系统中运行mavgenerate时遇到问题,请确保您有足够的权限执行该操作。您可以尝试使用sudo运行命令。同时,您也需要确保您的系统上安装了mavlink和Python的相关依赖库。

希望这些信息对您有所帮助!

参考结合AI智能、文心一言,如对您有帮助,恭请采纳。

这个问题通常是由于您的 Python 版本太高导致的。在 Python 3.7 中,imp 模块已被弃用。因此,您需要使用 Python 2.7 或更新的版本。

如果您已经安装了多个 Python 版本,请尝试在命令行中运行 python2 而不是 python3,以确保使用的是正确的 Python 版本。

如果您只安装了 Python 3.x 版本,则需要安装 Python 2.7 版本。您可以从官方网站(https://www.python.org/downloads/release/python-2718/)下载 Python 2.7,并按照安装指南进行安装。

如果您已经正确安装了 Python 2.7,但仍然遇到此问题,请确保在终端中使用 Python 2.7,并尝试重新安装 mavlink。

版本问题

这个问题无非两种原因:
1、ModuleNotFoundError: No module named 'imp' 提示imp这个库没有安装,难么就检查下这个包是否已正确安装,如果已安装还是出现这个问题,那么就是第二种原因
2、包、包与包之间、python等的版本不兼容的问题,这个就需要是尝试更换不同的版本来测试

换个低版本的python

参考结合AI智能、文心一言等综合回答,若有帮助,恭请采纳。

根据报错信息,可能是缺少imp模块导致的。可以尝试在命令行中执行以下命令安装imp模块:

pip install imp

如果安装完成后仍然出现报错,可以尝试升级future模块:

pip install --upgrade future

如果仍然无法解决问题,可以尝试重新安装Python环境并重新配置mavlink。

版本不兼容,换个python版本试试

尝试更新您使用的 mavlink 和 pymavlink 版本,以确保与 Python 3.12 兼容