我了解到有一个基于 CLIPS 版本 6.30 的 PyCLIPS 版本。相同(或相似)的 PyCLIPS 版本也可以通过 pip 安装,请参见此处。
在 Linux 上,这两种方法都可以正常工作,即通过 git clone + setup.py 或通过 pip 安装。在 Windows 上,它仅适用于 cygwin 64 位。pip install pyclips
失败(我想是由于缺少“-DWIN_MVC”标志,请参见下面的步骤 7)。
但是,我想在“常规”Windows python 上使用基于 CLIPS 6.30 的 PyCLIPS,准确地说是在 Windows 7 64 位上使用 Python2.7 32 位。我安装了 Visual Studio Express 2008。
我尝试了什么:
- git 克隆https://github.com/almostearthling/pyclips.git
- cd pyclips
- git checkout pyclips-1.1_clips-6.30
- 删除文件
clipssrc
- 从官方存储库下载 CLIPS 6.30 源代码
- 创建一个新文件夹 文件夹
clipssrc
内新创建的文件pyclips
夹 - 将文件夹内容解压
core
到clipssrc
文件夹中 - 在
setup.py
第 738 行左右,添加'-DWIN_MVC'
到CFLAGS
列表中 - 为 Windows 安装补丁实用程序并将其添加到 PATH
- 启动 Visual Studio Express 2008(32 位)命令提示符
- cd 进入
pyclips
文件夹 - 跑
python setup.py build
- 如果构建通过(它应该)安装通过
python setup.py install
尽管构建和安装都通过了,但大整数仍然会导致错误,就像 CLIPS 6.30 之前的版本一样。这意味着 CLIPS 无法处理大于2147483648
(sys.maxint+1
在 python 2.7 32 位上)的整数。
在使用 Visual Studio 2008 进行编译期间,我收到了警告“ conversion from '__int64' to 'long', possible loss of data
”。我将相应变量的类型更改为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 的 python 解释器,9223372036854775807
但不适用于具有 sys.maxint 的解释器2147483647
。有趣的是,即使是 64 位 Windows Python 也有后者的值。
概括:
- cygwin Python 64位,maxint:9223372036854775807,没有错误
- cygwin Python 32位,maxint:2147483647,错误
- Windows Python 2.7 32 位,最大值:2147483647,错误
- Windows Python 2.7 64 位,最大值:2147483647,错误