Модуль запросов не работает с cx_freeze - PullRequest
0 голосов
/ 23 марта 2019

Я написал скрипт на 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)
...