如何解决Kivy App在电话上出现“奇异矩阵”错误,但在计算机上却没有
我的自行编写的Kivy应用程序遇到问题,我在网上找不到任何地方。非常感谢您的帮助。
问题如下。我的代码涉及numpy矩阵求逆,并且在计算机上运行时绝对可以正常工作。但是,一旦我在使用XCode的模拟iPhone或个人电话上运行它,即使所讨论的矩阵绝对不是单数,我也会遇到LinAlgError("Singular matrix") numpy.linalg.LinAlgError: Singular matrix
错误。
编辑:
在计算机上:
数字版本:1.19.1
numpy.show_config()
的输出:
blas_mkl_info:
NOT AVAILABLE
blis_info:
NOT AVAILABLE
openblas_info:
libraries = ['openblas','openblas']
library_dirs = ['/usr/local/lib']
language = c
define_macros = [('HAVE_CBLAS',None)]
blas_opt_info:
libraries = ['openblas',None)]
lapack_mkl_info:
NOT AVAILABLE
openblas_lapack_info:
libraries = ['openblas',None)]
lapack_opt_info:
libraries = ['openblas',None)]
在模拟电话上:
数字版本:1.16.4
numpy.show_config()
的输出:
lapack_mkl_info:
NOT AVAILABLE
openblas_lapack_info:
NOT AVAILABLE
openblas_clapack_info:
NOT AVAILABLE
atlas_3_10_threads_info:
NOT AVAILABLE
atlas_3_10_info:
NOT AVAILABLE
atlas_threads_info:
NOT AVAILABLE
atlas_info:
NOT AVAILABLE
accelerate_info:
extra_compile_args = ['-msse3','-I/System/Library/Frameworks/vecLib.framework/Headers']
extra_link_args = ['-Wl,-framework','-Wl,Accelerate']
define_macros = [('NO_ATLAS_INFO',3),('HAVE_CBLAS',None)]
lapack_opt_info:
extra_compile_args = ['-msse3',None)]
解决方法
导致问题的原因几乎可以肯定是链接程序参数中的-Wl,Accelerate
。 Accelerate随附了非常老旧且有些破损的LAPACK版本,这就是为什么从https://github.com/numpy/numpy/pull/15759(未发布1.20)开始不再支持它的原因。
如果您可以使用在环境变量中设置的ATLAS=None BLAS=None LAPACK=None
来重建kivy的numpy,那么最终将没有这种Accelerate依赖性。
您可能必须从https://github.com/kivy/python-for-android/blob/develop/pythonforandroid/recipes/numpy/__init__.py开始挖掘,才能弄清楚如何将其传递给基维。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。