2012-04-25 24 views
0

我最近一直在學習使用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 

回答

1

有這個 issue8275

問題的來源是 後加載的dll,GetConsoleScreenBufferInfo總是返回零, 所以大小返回None,每個人都不高興一個已知的問題。

source of the problem

這個問題似乎如果self.hout = GetStdHandle(STD_OUTPUT_HANDLE)在大小函數的開頭再次呼籲,只是打電話GetConsoleScreenBufferinfo

使用本 console.py

+0

前解決謝謝,我一直試圖追蹤這一段時間,呃。 – Iguananaut 2013-09-11 21:00:41