Тем не менее, я работаю над проектом, в котором мне нужно установить соединение между 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.pyВ скрипте Python реализованы следующие строки для временного создания переменных среды, связанных с каталогом swi-prolog внутри проекта
`
из tkinter import Tk, Toplevel, Canvas, Entry, Кнопка, PhotoImage, окно сообщения, метка
из 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!
Мобильная версия