首页 > 解决方案 > 如何解决 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 结束。

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

标签: pythonpython-3.xpyfmi

解决方案


我现在意识到为什么加载了错误版本的包。卸载 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

推荐阅读