你能告诉我如何制作一个独立的pyinstaller
应用程序吗?我应该在奥利德的setup.py中写些什么,让我的应用程序与pyinstaller
一起工作。以下是我的python脚本使用的内容
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException
import pandas as pd
import random
import time
import math
import os, sys, subprocess
import eel
注意:我的脚本使用了一个.xlsx文件,一个.txt文件,由于GUI是用eel
构建的,所以一些.html、.css、.js文件(位于./web/…下(
以下是我的setup.py现在的样子:
from setuptools import setup
APP = ['RaportariSmart.py']
DATA_FILES = ['Scoala.xlsx', './driver/chromedriver', './driver/chromedriver.exe', './web/ExportZilnic.txt', './web/index.html', './web/main.js', './web/style.css', './web/img/a3ca141c-event-arrows-bg.png', './web/css/bootstrap.min.css']
OPTIONS = {'includes':['selenium', 'eel', 'pandas', 'os', 'sys', 'subprocess']}
setup(
name='Raporari Smart',
version='1.0.0',
author='Mihnea Manolache',
app=APP,
data_files=DATA_FILES,
options={'py2app': OPTIONS},
setup_requires=['py2app'],
)
问题:每当我用pyinstaller
打包应用程序时,它就会关闭。
p.S.我在tkinter
应用程序上使用了相同的脚本,并成功地将其打包,但我无法使其与eel
一起工作
我知道时间真的很晚了,但如果您正在使用PyInstaller,请尝试使用规范文件。将.exe文件的源和.exe文件的目标添加到二进制文件中而不是 数据中以下是规范文件中的一个小片段。 运行 如果问题仍然存在,则可能是您在程序中为 此外,我认为最好是您可以根据浏览器版本自动在机器上下载网络驱动程序,而不是提供带有.exe文件的特定版本。 有一个很酷的模块可以下载相应版本的web驱动程序,因此您不必将web驱动程序添加到.exe文件webdrivermanager中。更改web驱动程序的下载位置,并将其指向程序中的路径。a = Analysis(['app.py'],
pathex=['D:\tmp\testProjects\testEel'],
binaries=[('venv\Lib\site-packages\webdrivermanager\87\chromedriver.exe', '.')],
datas=[('D:\tmp\testProjects\testEel\venv\lib\site-packages\eel\eel.js', 'eel'), ('web', 'web')],
hiddenimports=['bottle_websocket'],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
PyInstaller app.py
webdriver
提供了不正确的路径。