Я написал скрипт на Python 3.7 для извлечения информации с веб-сайта. Для этого скрипта я использовал следующие пакеты: PyQt5, запросы, Beautiful Soup, unidecode и os. Мне нужно поделиться этим приложением с другом, и я не могу создать исполняемый файл с помощью cx_freeze.
Исполняемый файл работает (графический интерфейс показывает входные данные пользователя), но не выполняет основную задачу.
Я добавил окна сообщений в свой код и обнаружил, что GUI (созданный с помощью PyQt5) закрывается, когда интерпретатор попадает в первую функцию request.get () моего кода.
Я уже пытался указать путь к «cacert.pem», но это не решило проблему.
Код работает гладко в PyCharm. Проблемы возникают только при попытке создать файл «.exe».
Я понятия не имею, что я могу сделать, чтобы решить это. Я уже пробовал pyinstaller, но у меня проблемы с PyQt5.
Большое спасибо.
Я очень ценю помощь!
Вот файл setup.py:
import sys
from cx_Freeze import setup, Executable
import requests.certs
base = None
if sys.platform == 'win32':
base = 'Win32GUI'
setup(
name = "Extractor",
version = "1.0.0",
options = {"build_exe": {
'packages': ["os","bs4", "unidecode",
"array"],
'include_msvcr': True,
'include_files': [(requests.certs.where(),'cacert.pem')],
'includes': 'idna.idnadata'
}},
executables = [Executable("tentativa1000.py",
base=base)],)
Функция questions.get () вызывается так:
page = requests.get(url, verify = find_data_file('cacert.pem')
def find_data_file(filename):
if getattr(sys, 'frozen', False):
# The application is frozen
datadir = os.path.dirname(sys.executable)
else:
# The application is not frozen
# Change this bit to match where you store your data files:
datadir = os.path.dirname(__file__)
return os.path.join(datadir, filename)