Ubuntu 20.04安装Drake时pydrake导入缺少_module_py模块报错问题
问题原因解答
1. pydrake.common._module_py的作用
这个文件是Drake底层C代码编译生成的Python绑定二进制扩展文件,并非纯Python脚本,作用是封装Drake的C核心逻辑,暴露接口给Python侧调用。每个Drake预编译发行版的该类扩展文件,都仅对编译时指定的Python版本生效。
2. 报错的直接原因
确实是Python版本不匹配导致的:
你当前安装的Drake是针对Python 3.6编译的,从报错里的路径/opt/drake/lib/python3.6/site-packages/pydrake可以直接验证这一点。你本地Python版本为3.8.5,不同Python小版本的二进制扩展互不兼容,Python 3.8解释器只会识别带有cpython-38版本标识的.so扩展文件,而你现有Drake里的绑定文件是适配Python 3.6的,后缀带有cpython-36标识,无法被3.8识别,因此会抛出模块不存在的报错。你在目录中看不到直接命名为._module_py的文件也属于正常情况,实际的二进制扩展文件名会带Python版本和平台标识。
解决方案
- 方案一:安装适配Python 3.8的Drake版本
先删除现有Drake安装目录:
下载对应你Ubuntu版本、适配Python 3.8的Drake预编译包,重新按照安装步骤解压安装即可。sudo rm -rf /opt/drake - 方案二:使用Python 3.6虚拟环境运行现有Drake
如果你不想替换现有Drake版本,可以通过venv或者conda创建Python 3.6的虚拟环境,在虚拟环境中执行pydrake相关代码即可正常运行。
内容的提问来源于stack exchange,提问作者JJT
相关产品推荐
相关产品推荐

