我正在尝试按照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的自然语言语义的一阶逻辑编程,我认为有一个可以进行约束编程的逻辑程序会很好(具体来说,解决相等的逻辑约束) )
答案 0 :(得分:3)
找到我的答案 - 我应该安装一个64位(而不是32位)版本的SWI-Prolog,以便与64位PySWIP和Python一起使用(尽管PySWIP的安装指南特别提到了32位SWI-Prolog的)。它现在正在工作。
PS:我没有发现需要重命名libswipl.dll或swipl.ico