VS2008中的简单的swig python示例 - 导入错误 - 内部(py)readline错误
问题描述:
我最近一直在学习使用python的swig的基本知识,并遇到了一个奇怪的错误,在命令窗口中运行python时导入模块返回此。VS2008中的简单的swig python示例 - 导入错误 - 内部(py)readline错误
>>> import simpFunc
Readline internal error
Traceback (most recent call last):
File "D:\Dev\Python\winx64\lib\site-packages\pyreadline\console\console.py", line 671, in hook_wrapper_23
res = ensure_str(readline_hook(prompt))
File "D:\Dev\Python\winx64\lib\site-packages\pyreadline\rlmain.py", line 342, in readline
return self.mode.readline(prompt)
File "D:\Dev\Python\winx64\lib\site-packages\pyreadline\modes\emacs.py", line 116, in readline
self._print_prompt()
File "D:\Dev\Python\winx64\lib\site-packages\pyreadline\rlmain.py", line 298, in _print_prompt
n = c.write_scrolling(self.prompt, self.prompt_color)
File "D:\Dev\Python\winx64\lib\site-packages\pyreadline\console\console.py", line 289, in write_scrolling
w, h = self.size()
TypeError: 'NoneType' object is not iterable
虽然这个错误后,可以正确而在脚本运行时,它没有错误可言使用的模块功能。
我想知道是否有人可以对此事进行阐述。我目前正在使用Visual Studio 2008 x64命令提示符来构建和链接这个。 Python版本2.7.2,Swig版本2.0.4
它不只是对于这个具体的例子,我已经尝试了几个c例子都有这个错误。
以下列出的是我正在使用的文件。
simpFunc.cpp
#include "simpFunc.h"
void printNum(int aNum)
{
std::cout << "num is " << aNum << std::endl;
}
simpFunc.h
#include <iostream>
void printNum(int aNum);
simpFunc.i
/* File : simpFunc.i */
%module simpFunc
%{
#include "simpFunc.h"
%}
%include "simpFunc.h"
下面是我使用来创建.pyd命令
swig.exe -python -c++ simpFunc.i
cl /c simpFunc.cpp simpFunc_wrap.cxx /I"D:\Dev\Python\winx64\include"
link /dll /out:.\_simpFunc.pyd /LIBPATH:D:\Dev\Python\winx64\libs simpFunc.obj simpFunc_wrap.obj
答
有这个 issue8275
问题的来源是 后加载的dll,GetConsoleScreenBufferInfo总是返回零, 所以大小返回None,每个人都不高兴一个已知的问题。
这个问题似乎如果self.hout = GetStdHandle(STD_OUTPUT_HANDLE)在大小函数的开头再次呼吁,只是打电话GetConsoleScreenBufferinfo
使用本 console.py
前解决谢谢,我一直试图追踪这一段时间,呃。 – Iguananaut 2013-09-11 21:00:41