我用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)