请求模块不适用于cx_freeze

时间:2019-03-23 02:12:54

标签: python python-requests cx-freeze

我用Python 3.7编写了一个脚本来从网站中提取信息。对于此脚本,我使用了以下软件包:PyQt5,请求,Beautiful Soup,unidecode和os。我需要与朋友共享此应用程序,并且无法使用cx_freeze创建可执行文件。

可执行文件有效(GUI显示以获取用户的输入),但没有完成主要任务。

我已经在代码中添加了消息框,我发现当交互器到达代码的第一个request.get()函数时,GUI(使用PyQt5构建)将关闭。 我已经尝试指出'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)],)

requests.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)

0 个答案:

没有答案