Тем не менее, я работаю над проектом, в котором мне нужно установить соединение между Python и Prolog через pyswip, который представляет собой графический интерфейс с tkinter, где на основе введенных данных генерируется конкретный запрос для выполнения на основе знаний база, что-то простое так сказать, но при создании экзешника и запуске его на другом компьютере выдает ошибку.
Пытаюсь создать экзешник командой
Код: Выделить всё
pyinstaller --onefile --windowed --clean --hidden-import=pyswip --add-data "data/*;data" --add-data "swi-prolog/*;swi-prolog" --icon="data/icon_steel.ico" gui.pyp>
В скрипте Python были реализованы следующие строки для временного создания переменных среды, связанных с каталогом swi-prolog внутри проекта
`
из tkinter import Tk, Toplevel, Canvas, Entry, Button, PhotoImage, messagebox, Label
из pathlib import Path
из pyswip import Prolog
import re, os, sys
Код: Выделить всё
if getattr(sys, 'frozen', False):
# El script está ejecutándose en un .exe
base_path = sys._MEIPASS
else:
# El script se está ejecutando de manera normal
base_path = os.path.dirname(os.path.abspath(__file__))
swi_prolog_path = base_path / 'swi-Prolog' / 'App' / 'SWI-Prolog'
os.environ['SWI_HOME_DIR'] = str(swi_prolog_path)
os.environ['PATH'] = str(swi_prolog_path / 'bin') + os.pathsep + os.environ['PATH']
# Direccionamiento de rutas
conocimientos_path = os.path.join(base_path, 'data', 'conocimientos.pl')
...`
После создания исполняемого файла проекта и попытки запустить его на другом компьютере, где есть Python и swi-prolog. не установлен, возникает следующая ошибка:
Код: Выделить всё
Traceback (most recent call last): File "gui.py", line 3, in File "", line 1178, in _find_and_load File "", line 1149, in _find_and_load_unlocked File "", line 690, in _load_unlocked File "PyInstaller\loader\pyimod02_importers.py", line 384, in exec_module File "pyswip\__init__.py", line 29, in File "", line 1178, in _find_and_load File "", line 1149, in _find_and_load_unlocked File "", line 690, in _load_unlocked File "PyInstaller\loader\pyimod02_importers.py", line 384, in exec_module File "pyswip\prolog.py", line 26, in File "", line 1178, in _find_and_load File "", line 1149, in _find_and_load_unlocked File "", line 690, in _load_unlocked File "PyInstaller\loader\pyimod02_importers.py", line 384, in exec_module File "pyswip\core.py", line 510, in File "pyswip\core.py", line 358, in _find_swipl File "pyswip\core.py", line 194, in _find_swipl_windows pyswip.core.SwiPrologNotFoundError: SWI-Prolog not found [PYI-484:ERROR] Failed to execute script 'gui' due to unhandled exception!Подробнее здесь: https://stackoverflow.com/questions/791 ... pendencies
Мобильная версия