Ubuntu下安装pymavlink 2.4.8失败,疑与Python3.10.6不兼容
解决pymavlink 2.4.8在Python3.10下安装失败的问题
问题根源
Python 3.9及以上版本移除了array.array.fromstring方法,替换为array.array.frombytes,而pymavlink 2.4.8的源码中仍在使用这个已废弃的方法,导致构建时触发AttributeError: 'array.array' object has no attribute 'fromstring'错误。
解决方案
方法1:手动修改源码后安装
- 下载pymavlink 2.4.8的源码包:
pip3 download pymavlink==2.4.8 - 解压下载的压缩包:
tar -xzf pymavlink-2.4.8.tar.gz cd pymavlink-2.4.8 - 全局替换源码中所有的
fromstring为frombytes:grep -rl "fromstring" . --include="*.py" | xargs sed -i 's/fromstring/frombytes/g' - 安装修改后的版本:
sudo pip3 install .
方法2:降级Python版本到3.8
如果不想修改源码,可以安装Python 3.8并创建虚拟环境来安装pymavlink 2.4.8:
- 安装Python 3.8:
sudo apt install python3.8 python3.8-venv python3.8-pip - 创建并激活虚拟环境:
python3.8 -m venv sitl-env source sitl-env/bin/activate - 在虚拟环境中安装pymavlink 2.4.8:
pip install pymavlink==2.4.8
方法3:尝试兼容Python3.10的旧版本
如果允许偏离2.4.8版本,可以尝试安装pymavlink 2.4.30及以上的旧版本(这些版本已修复Python3.9+的兼容性问题):
sudo pip3 install pymavlink==2.4.30
内容的提问来源于stack exchange,提问作者Samantha Hill
相关产品推荐
相关产品推荐

