python - 如何解决 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
推荐阅读
- php - Laravel 5.8:如何将两个争论传递给 Event & Listener
- c# - ArgumentOutOfRangeException:索引和长度必须引用字符串中的位置
- django-rest-framework - 为什么 DRF browsableapi 不显示创建序列化程序表单
- node.js - 在Node js中将csv转换为json
- c++ - 如何从 qtreeview 给模型两个可点击的图标
- python - Laravel:命令“python失败。退出代码:1(一般错误)'python'不被识别为内部或外部命令,可操作
- c++ - 在替换字符串中的单个字符时修改哈希值(c ++)
- julia - Julia Flux error: MethodError: no method matching *(::Chain{Tuple{Conv{2,4,typeof(identity),Array{Float32,4},Array{Float32,1}},var"#13#15"}}, ::Int64)
- jpa - 认证失败时,根据用户名是否存在发送不同的应答
- python - 为什么 mypy 确定参数是可选的?