Python 2.7 基于CLIPS 6.30 for Windows Python 2.7 32位安装PyCLIPS
我了解到PyCLIPS的一个版本是基于CLIPS版本6.30的。 也可以通过pip安装相同(或类似)的PyCLIPS版本 在Linux上,这两种方法都可以正常工作,即通过git clone+setup.py或通过pip进行安装。在Windows上,它仅适用于64位cygwinPython 2.7 基于CLIPS 6.30 for Windows Python 2.7 32位安装PyCLIPS,python-2.7,visual-studio-2008,clips,cl,pyclips,Python 2.7,Visual Studio 2008,Clips,Cl,Pyclips,我了解到PyCLIPS的一个版本是基于CLIPS版本6.30的。 也可以通过pip安装相同(或类似)的PyCLIPS版本 在Linux上,这两种方法都可以正常工作,即通过git clone+setup.py或通过pip进行安装。在Windows上,它仅适用于64位cygwinpip安装pyclips失败(我想是由于缺少“-DWIN_MVC”标志,请参见下面的步骤7) 但是,我希望在“常规”Windows python上使用基于CLIPS 6.30的PyCLIPS,确切地说,在Windows 7
pip安装pyclips
失败(我想是由于缺少“-DWIN_MVC”标志,请参见下面的步骤7)
但是,我希望在“常规”Windows python上使用基于CLIPS 6.30的PyCLIPS,确切地说,在Windows 7 64位上使用Python2.7 32位。我已安装visual studio express 2008
我尝试的是:
clipssrc
pyclips
文件夹中新建文件夹clipssrc
core
文件夹的内容提取到clipssrc
文件夹中setup.py
中,将'-DWIN_MVC'
添加到CFLAGS
列表中pyclips
文件夹python setup.py build
python setup.py安装安装
2147483648
(sys.maxint+1
在python 2.7 32位上)的整数
在使用visual studio 2008进行编译期间,我收到警告“从“\uuu int64”转换为“long”,可能会丢失数据。我将相应变量的类型更改为long
。警告消失,但大整数错误仍然存在
如何在Windows 7 64位上安装基于CLIPS 6.30的PyCLIPS,以便与32位Windows Python 2.7一起使用?
编辑1:
我试着用cygwin 32位安装它,但它不起作用。那么这可能是一个32/64位的问题?32位版本的剪辑(通过官方安装程序安装)在我的Windows 7 64位上运行良好
编辑2:
它似乎适用于sys.maxint为9223372036854775807
的python解释器,但不适用于sys.maxint为2147483647
的解释器。有趣的是,即使是64位的Windows Python也有后者的价值
总结:
- cygwin Python 64位,maxint:9223372036854775807,无错误
- cygwin Python 32位,maxint:2147483647,错误
- Windows Python 2.7 32位,maxint:2147483647,错误
- Windows Python 2.7 64位,maxint:2147483647,错误
问题可能在于clipsmodule.c中用于将c整数转换为python整数的Py_BuildValue调用。可能像Py_BuildValue(((il)”,t,DOPToLong(o))这样的调用需要是Py_BuildValue(((il)”,t,DOPToLong(o)),基于。在文件clipsmodule.c中,我将第1493行更改为p=Py_BuildValue((il)”,t,ValueToLong(GetMFValue(ptr,pos))代码>和第1582行到p=Py_BuildValue(“(iL)”,t,DOPToLong(o))代码>但不幸的是,这没有帮助(现在)。还有其他想法吗?我怀疑转换失败,要么是在CLIPS和Python之间传递值,要么是在Python端以int形式存储值,而值应该是long。我很少使用Python,因此我不熟悉C和Python之间传递值的接口,但我建议在clipsmodule.C和clips_wrap.py中添加一些代码,以尝试确定转换失败的点。我认为Sou是正确的。今天我就这么做了,我可能会找到合适的位置。我更改了一些行,现在它似乎不再对大整数抛出错误。不过我需要核实一下我是否没有弄坏任何东西。我会在pyclips github repo上发布任何可靠的结果。@GaryRiley我想我已经修复了它。请参见此处:问题可能在于clipsmodule.c中的Py_BuildValue调用,用于将c整数转换为python整数。可能像Py_BuildValue(((il)”,t,DOPToLong(o))这样的调用需要是Py_BuildValue(((il)”,t,DOPToLong(o)),基于。在文件clipsmodule.c中,我将第1493行更改为p=Py_BuildValue((il)”,t,ValueToLong(GetMFValue(ptr,pos))代码>和第1582行到p=Py_BuildValue(“(iL)”,t,DOPToLong(o))代码>但不幸的是,这没有帮助(现在)。还有其他想法吗?我怀疑转换失败,要么是在CLIPS和Python之间传递值,要么是在Python端以int形式存储值,而值应该是long。我很少使用Python,因此我不熟悉C和Python之间传递值的接口,但我建议在clipsmodule.C和clips_wrap.py中添加一些代码,以尝试确定转换失败的点。我认为Sou是正确的。今天我就这么做了,我可能会找到合适的位置。我更改了一些行,现在它似乎不再对大整数抛出错误。不过我需要核实一下我是否没有弄坏任何东西。我会在pyclips github repo上发布任何可靠的结果。@GaryRiley我想我已经修复了它。请看这里: