光速中断 八度锻造包安装 - 未实现二进制运算符'=='



我在尝试安装Octave软件包时收到以下错误:

binary operator '==' not implemented for 'cell' by 'scalar' operations
error: called from
glob at line 62 column 1
install at line 60 column 11
pkg at line 437 column 9

这种情况发生在几个软件包上 - 例如结构和优化,无论我是否从本地下载或从 Forge 安装。

请注意,如果我加载 Lightspeed 库(版本 2.8(,它会发生这种情况,它取代了内置的glob函数。

我无法在我的机器上对此进行广泛测试,但 LightSpeed "工具包"似乎只不过是"文件"的集合(尽管需要初始编译(。

将此集合添加到路径中会导致它隐藏一个核心八度函数(glob(,而该函数恰好在 matlab 中不存在。

解决方法是创建一个命名空间,即不是直接将有问题的项添加到路径中,而是将它们包裹在名称前面带有加号 ('+'( 的文件夹周围(例如"+Lightspeed"(,并将其添加到路径中。然后,您可以调用该命名空间限定的所有 Lightspeed 函数,例如"光速.digamma"。

从理论上讲,这应该有效;这取决于特定的实现,他们如何处理相对引用等,但理论上应该没问题。

或者,您可以稍微修改一下 Lightspeed 代码并用Lglob或类似的东西替换所有出现的glob

或者,正如 Cris 建议的那样,您可以尝试从路径中删除 Lightspeed,并且仅在您需要使用它的功能之一(或在执行 Lightspeed 相关内容之前将其cd到其文件夹(时才加载它。

正如评论中指出的那样,这值得作为一个错误提出,无论是 Lightspeed1还是 Octave。


1:虽然大概Lightspeed只会说他们不支持Octave,欢迎您尝试自己修复代码

最新更新