微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何解决PyFMI中的字符编码错误?

如何解决如何解决PyFMI中的字符编码错误?

我在 Ubuntu 20.04 上尝试使用 PyFMI 加载和运行从 OpenModelica 导出的 FMU。当我运行代码时:

from pyfmi import load_fmu
model = load_fmu('Model.fmu')

产生以下错误

  File "src/pyfmi/fmi.pyx",line 7943,in pyfmi.fmi.load_fmu
  File "src/pyfmi/fmi.pyx",line 7086,in pyfmi.fmi.FMUModelME2.__init__
  File "src/pyfmi/fmi.pyx",line 3761,in pyfmi.fmi.FMUModelBase2.__init__
  File "src/pyfmi/fmi.pyx",line 45,in pyfmi.fmi.encode
TypeError: latin_1_encode() argument 1 must be str,not bytes

无论我使用的是通过 pip 还是 conda 提供的 PyFMI 版本,结果都是一样的。

我花了几个小时试图找到解决方案,但无济于事。在 pip 上,他从 pyfmi.check_packages() 返回的包信息是:

PyFMI version ................ 2.5                           

Platform ..................... linux                         

Python version ............... 3.8.5                         



Dependencies: 

Package                        Version                       
-------                        -------                       
assimulo...................... 3.0                           
Cython........................ 0.29.22                       
lxml.......................... 4.5.0                         
matplotlib.................... 3.1.2                         
numpy......................... 1.17.4                        
scipy......................... 1.6.1 

在 conda 上是

PyFMI version ................ 2.5                           

Platform ..................... linux                         

Python version ............... 3.8.5                         



Dependencies: 

Package                        Version                       
-------                        -------                       
assimulo...................... 3.0                           
Cython........................ 0.29.22                       
lxml.......................... 4.6.2                         
matplotlib.................... 3.3.4                         
numpy......................... 1.20.1                        
scipy......................... 1.6.1 

注意:我已经尝试通过 conda 安装版本 PyFMI 2.8.5,但无论我尝试什么,我似乎总是以 2.5 结束。

有人有什么建议吗?非常感谢您的帮助!

解决方法

我现在意识到为什么加载了错误版本的包。卸载 pip 版本 (2.5) 后,conda 版本 (2.8.5) 变得可见,见下文(修复第二个问题后更新)。当然,现在我有一个不同的问题,但是我会在不同的线程中记录这个问题...结果证明是一个类似的问题。我在 pip 中安装了一个过时的 Assimulo 包,卸载后可以正确使用 conda 版本。我将我的解决方案记录公开,希望我的职位上的其他人可以从中受益。

Performing pyfmi package check 
==============================

PyFMI version ................ 2.8.5                         

Platform ..................... linux                         

Python version ............... 3.8.5                         



Dependencies: 

Package                        Version                       
-------                        -------                       
assimulo...................... 3.2.3                         
Cython........................ 0.29.22                       
lxml.......................... 4.6.2                         
matplotlib.................... 3.3.4                         
numpy......................... 1.20.1                        
scipy......................... 1.6.1

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。