我在尝试安装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,欢迎您尝试自己修复代码