Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 基于CLIPS 6.30 for Windows Python 2.7 32位安装PyCLIPS_Python 2.7_Visual Studio 2008_Clips_Cl_Pyclips - Fatal编程技术网

Python 2.7 基于CLIPS 6.30 for Windows Python 2.7 32位安装PyCLIPS

Python 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

我了解到PyCLIPS的一个版本是基于CLIPS版本6.30的。 也可以通过pip安装相同(或类似)的PyCLIPS版本

在Linux上,这两种方法都可以正常工作,即通过git clone+setup.py或通过pip进行安装。在Windows上,它仅适用于64位cygwin
pip安装pyclips
失败(我想是由于缺少“-DWIN_MVC”标志,请参见下面的步骤7)

但是,我希望在“常规”Windows python上使用基于CLIPS 6.30的PyCLIPS,确切地说,在Windows 7 64位上使用Python2.7 32位。我已安装visual studio express 2008

我尝试的是:

  • git克隆
  • cd-pyclips
  • git签出pyclips-1.1_clips-6.30
  • 删除文件
    clipssrc
  • 从下载CLIPS 6.30源代码
  • 新建文件夹在
    pyclips
    文件夹中新建文件夹
    clipssrc
  • core
    文件夹的内容提取到
    clipssrc
    文件夹中
  • 在第738行附近的
    setup.py
    中,将
    '-DWIN_MVC'
    添加到
    CFLAGS
    列表中
  • 安装windows修补程序实用程序并将其添加到路径
  • 启动visual studio express 2008(32位)命令提示符
  • 将cd放入
    pyclips
    文件夹
  • 运行
    python setup.py build
  • 如果构建完成(应该)通过
    python setup.py安装安装
  • 尽管构建和安装过程已经完成,但大整数仍然会导致错误,就像在6.30版本之前的剪辑中一样。这意味着CLIPS无法处理大于
    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我想我已经修复了它。请看这里: