Get Started =========== Requirements ------------ * Python 3.9 or later * SWI-Prolog 8.4.2 or later * 64bit Intel or ARM processor .. IMPORTANT:: Make sure the SWI-Prolog architecture is the same as the Python architecture. If you are using a 64bit build of Python, use a 64bit build of SWI-Prolog, etc. Installing PySwip ----------------- .. _install_from_pypi: PyPI ^^^^ PySwip is available to install from `Python Package Index `_. .. TIP:: We recommend installing PySwip into a Python virtual environment. See: `Creation of virtual environments `_ You can install PySwip using:: pip install -U pyswip You will need to have SWI-Prolog installed on your system. See :ref:`install_swi_prolog`. PySwip requires the location of the ``libswpl`` shared library and also the SWI-Prolog home directory. In many cases, PySwip can find the shared library and the home directory automatically. Otherwise, you can use the following environment variables: * ``SWI_HOME_DIR``: The SWI-Prolog home directory. It must contain the ``swipl.home`` file. It's the ``$SWI_PROLOG_ROOT/lib/swipl`` directory if you have compiled SWI-Prolog form source. * ``LIBSWIPL_PATH``: The location of the ``libswipl`` shared library. You can get the locations mentioned above using the following commands:: swipl --dump-runtime-variables That will output something like:: PLBASE="/home/yuce/swipl-9.3.8/lib/swipl"; ... PLLIBDIR="/home/yuce/swipl-9.3.8/lib/swipl/lib/x86_64-linux"; Use the value in the ``PLBASE`` variable as the value for the ``SWI_HOME_DIR`` environment variable. Use the value in the ``PLLIBDIR`` variable as the value for the ``LIBSWIPL_PATH`` environment variable. Arch Linux / Manjaro Linux / Parabola GNU/Linux-libre ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ These Linux distributions have PySwip in their package repositories. You can use the following to install PySwip globally:: pacman -S python-pyswip .. NOTE:: We recommend installing PySwip from :ref:`install_from_pypi`. Fedora Workstation ^^^^^^^^^^^^^^^^^^ You can use the following to install PySwip globally:: dnf install python3-pyswip .. NOTE:: We recommend installing PySwip from :ref:`install_from_pypi`. .. _install_swi_prolog: Installing SWI-Prolog --------------------- Some operating systems have packages for SWI-Prolog. Otherwise, you can download it from `SWI-Prolog's website `_ or build from source. Arch Linux / Manjaro Linux / Parabola GNU/Linux-libre ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ SWI-Prolog is available in the standard package repository:: pacman -S swi-prolog Fedora Workstation ^^^^^^^^^^^^^^^^^^ Installing SWI-Prolog:: dnf install pl Debian, Ubuntu, Raspbian ^^^^^^^^^^^^^^^^^^^^^^^^ * Ubuntu 22.04 has SWI-Prolog 8.4.3 in its repository. * Debian Bookworm, Ubuntu 24.04 and Raspberry Pi OS Bookworm have SWI-Prolog 9.0.4 in their repositories. Use the following to install SWI-Prolog:: apt install swi-prolog-nox Windows ------- Download a recent version of SWI-Prolog from https://www.swi-prolog.org/Download.html and install it. MacOS ----- The preferred way of installing SWI-Prolog on MacOS is using `Homebrew `_. Homebrew ^^^^^^^^ Installing SWI-Prolog:: brew install swi-prolog Official SWI-Prolog App ^^^^^^^^^^^^^^^^^^^^^^^ Install SWI-Prolog from https://www.swi-prolog.org/Download.html. If you get an error like ``libgmp.X not found``, you have to set the ``DYLD_FALLBACK_LIBRARY_PATH`` environment variable before running Python:: export DYLD_FALLBACK_LIBRARY_PATH=/Applications/SWI-Prolog.app/Contents/Frameworks OpenBSD ------- Install SWI-Prolog using the following on OpenBSD 7.6 and later:: pkg_add swi-prolog FreeBSD ------- SWI-Prolog can be installed using ``pkg``:: pkg install swi-pl Test Drive ---------- Run a quick test by running following code at your Python console: .. code-block:: python from pyswip import Prolog Prolog.assertz("father(michael,john)") print(list(Prolog.query("father(X,Y)")))