安装PySWIP以在Python中使用Prolog时出错

时间:2014-12-05 04:29:59

标签: python python-2.7 prolog swi-prolog

我正在尝试按照Windows中PySWIP的安装指南进行操作,该指南首先要求先安装 32位版本的SWI-Prolog并将其bin包含在PATH中,我做了。然后我安装了64位版本的PySWIP,因为我的Python-2.7是64位Anaconda版本。但它不起作用(见下面的错误)。

正如其他地方所建议的那样,我还将libswipl.dll(在C:\ Program Files(x86)\ pl \ bin中)的副本作为libpl.dll和swipl.ico(在C:\ Program Files中)( x86)\ pl)如pl.ico但没有运气。

当我进入下面的第一行时,我得到的错误(在使用Anaconda解释器的Spyder和EclipsePyDev IDE中)是:

>>> from pyswip import Prolog
        Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "C:\Users\XXX\Anaconda\lib\site-packages\pyswip\__init__.py", line 29, in <module>
        from pyswip.prolog import Prolog
      File "C:\Users\XXX\Anaconda\lib\site-packages\pyswip\prolog.py", line 29, in <module>
        from pyswip.core import *
      File "C:\Users\XXX\Anaconda\lib\site-packages\pyswip\core.py", line 360, in <module>
        _lib = CDLL(_path)
      File "C:\Users\XXX\Anaconda\lib\ctypes\__init__.py", line 365, in __init__
        self._handle = _dlopen(self._name, mode)
    WindowsError: [Error 193] %1 is not a valid Win32 application

如何解决这个问题?

背景:我正在研究NLTK book的自然语言语义的一阶逻辑编程,我认为有一个可以进行约束编程的逻辑程序会很好(具体来说,解决相等的逻辑约束) )

1 个答案:

答案 0 :(得分:3)

找到我的答案 - 我应该安装一个64位(而不是32位)版本的SWI-Prolog,以便与64位PySWIP和Python一起使用(尽管PySWIP的安装指南特别提到了32位SWI-Prolog的)。它现在正在工作。

PS:我没有发现需要重命名libswipl.dll或swipl.ico