首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kvaser的CAN库已加载,但程序可执行文件输出"No module named 'can.interfaces.kvaser'“错误

Kvaser的CAN库已加载,但程序可执行文件输出"No module named 'can.interfaces.kvaser'“错误
EN

Stack Overflow用户
提问于 2018-07-13 02:12:07
回答 3查看 609关注 0票数 2

我制作了一个工作应用程序,它成功地使用python-can模块在kvaser CAN总线上接收传入的消息。当我使用PyInstaller将这个程序转换成一个可执行文件时,终端记录了它“加载了kvaser的CAN库”。输出的.exe图形用户界面照常运行,但是程序突然不能像以前那样接收更多的CAN消息。在终端中,我打印了它捕获的错误:

“无法导入CAN接口‘kvaser’的模块can.interfaces.kvaser :没有名为‘can.interfaces.kvaser’的模块。

请注意,在我用来创建可执行文件的.spec文件中,我在顶部添加了“导入can.interfaces.kvaser”。我不确定我得到的错误是因为我没有正确使用pyinstaller,还是因为我以某种方式错误地导入了CAN依赖项,但我怀疑这可能是由于后者。有没有不同的方法来导入python-can kvaser模块,可以解决程序转换为可执行文件之前和之后的CAN功能之间的差异?

EN

回答 3

Stack Overflow用户

发布于 2018-07-13 21:13:38

我想通了。事实证明,PyInstaller专门将依赖项安装在要执行的主文件的顶部。导入到主文件中的其他python文件中的依赖项不会被PyInstaller检测到。我将我需要的所有导入调用添加到主文件中,并且它起作用了。

票数 2
EN

Stack Overflow用户

发布于 2021-06-11 19:44:29

另一种解决方案是将这些模块添加到pyInstallers隐藏导入列表中。例如:

代码语言:javascript
复制
a = Analysis(['myscript.py'],
         pathex='C:\\mypath\\src'],
         binaries=[],
         datas=[],
         hiddenimports=['can.interfaces.kvaser', 'can.interfaces.vector'],
         hookspath=[],
         runtime_hooks=[],
         excludes=[],
         win_no_prefer_redirects=False,
         win_private_assemblies=False,
         cipher=block_cipher,
         noarchive=False)
票数 1
EN

Stack Overflow用户

发布于 2020-10-28 18:08:41

我在pysintaller中的矢量实现中也遇到了同样的错误,没有名为‘can.interfaces.vector’的模块“错误。

正如Erika Lu所描述的,修复方法是在主文件中添加以下行;

代码语言:javascript
复制
import can
import can.interfaces.vector

那么你就不会得到错误;

代码语言:javascript
复制
 bus = can.interface.Bus(interface='vector', app_name....)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51312059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档