从C API导入tkinter失败

时间:2013-11-10 12:42:45

标签: python c tkinter

我正在尝试在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特定的。

0 个答案:

没有答案