Python - 需要重新加载SWIG生成的库才能正常工作

时间:2012-08-24 12:38:23

标签: python import swig

好吧,这个问题有点复杂,请耐心等待。 我有一个名为Libcvautomation的库 - 它用于应用程序测试目的,可以在github上找到 - https://github.com/DjBushido/libcvautomation 我正在使用python wrapper来进行非常高级的访问,并且很好地包装了一些函数。问题在于,无论出于何种原因,导入此包装都会破坏库。让我举个例子:

$> python
$! import libcvautomation #The actual library, or specifically the SWIG library
$! display = libcvautomation.cvaOpenDisplay('') #Open an Xlib display
$! print libcvautomation.xte_mouseLocation(display).x #Access the library
1794
$! import libcvautomation_funcs #Import the wrapper I built
$! print libcvautomation.xte_mouseLocation(display).x #Try the library again
-1
$! reload(libcvautomation)
$! print libcvautomation.xte_mouseLocation(display).x #One more try
1794

我不明白为什么重新加载实际的库(SWIG包装器)可以解决问题。 SWIG库是由libcvautomation_funcs导入的,但我原本希望它不会影响对库的顶级引用。
除此之外,当使用等效函数时,结果是相同的 -

$> python
$! import libcvautomation_funcs
$! libcvautomation_funcs.open_display() #Open an Xlib display, equivalent to 'display=' above
$! libcvautomation.mouse_location()
(-1, -1)

如果我在mouse_location()函数中添加代码,它会正确找到指针位置 如果有人能够告诉我为什么问题出现我会非常高兴。要重新创建它,请运行以下命令:

$> git clone https://github.com/DjBushido/libcvautomation.git
$> cd libcvautomation
$> ./configure; make; sudo make install
<run the above commands for the python session I described>
$> sudo make uninstall #Unless you want to hold on to the library

非常感谢你的帮助!如果我可以提供任何额外信息来帮助测试,我很乐意 编辑:我提供必要的文件来测试这个。它需要Python 2.7(Ubuntu 12.04)。如果有任何问题,请告诉我! https://github.com/downloads/DjBushido/libcvautomation/python_libcvautomation.tar.gz

0 个答案:

没有答案