我正在尝试在C ++应用程序中嵌入一些python代码,以便能够使用matplotlib轻松地绘制一些计算结果。不幸的是,尝试使用
导入 matplotlib.pyplot 模块PyObject* pyplotName = PyUnicode_FromString( "matplotlib.pyplot" );
PyObject* matplotlib = PyImport_Import( pyplotName );
我收到以下错误消息
Traceback (most recent call last):
File "C:\Python33\lib\site-packages\matplotlib\pyplot.py", line 98, in <module
>
_backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
File "C:\Python33\lib\site-packages\matplotlib\backends\__init__.py", line 28,
in pylab_setup
globals(),locals(),[backend_name],0)
File "C:\Python33\lib\site-packages\matplotlib\backends\backend_tkagg.py", lin
e 8, in <module>
import tkinter as Tk, tkinter.filedialog
File "C:\Python33\Lib\tkinter\__init__.py", line 36, in <module>
from tkinter import _fix
File "C:\Python33\Lib\tkinter\_fix.py", line 65, in <module>
import _tkinter
UnicodeEncodeError: 'mbcs' codec can't encode characters in position 0--1: inval
id character
显然错误来自 tkinter 模块。为了安全起见,我尝试显式导入 tkinter 模块,并且正如预期的那样,得到了相同的错误消息。但是,只有在我使用C API时才会出现问题,因为我可以在IDLE中使用 matplotlib.pyplot 而不会出现任何问题。
我真的希望能够使用Python作为情节,所以我希望有人可以帮我解决问题。
以防它是相关的:Python安装和C ++程序都是x64,在Windows上运行(从错误消息中的路径看)。
编辑:我已经设法在Linux上编译并运行该程序而没有任何问题,因此问题似乎是Windows特定的。