如何运行由 Pyinstaller 创建的使用 Webbot 的 Python 程序?

问题描述 投票:0回答:2

我正在尝试运行一个使用 Webbot 的相当简单的 Windows Python 3.7 脚本。该脚本在 Python 的 IDLE 中工作得很好,所以我知道我编写的代码可以工作并且没有任何问题,但我想将其作为 .exe 运行。然而用Pyinstaller打包后(通常效果很好),虽然Pyinstaller进程运行了,但实际生成的程序根本不会运行。

我看了一下here但这并没有多大帮助。如果我编译使用:

pyinstaller file.py

按照建议,当我运行生成的 .exe 时,程序立即关闭,没有错误消息。

如果我尝试:

pyinstaller --onefile file.py

或:

pyinstaller file.py -F

然后,当我运行编译后的 .exe 时,我收到以下消息:

FileNotFoundError: [WinError 3] The system cannot find the path specified: 'C:\\Users\\KimJiwoo\\Appdata\\Local\\Temp\\_MEI51362\\drivers\\chrome_windows.exe'

所以我想我需要 chrome_windows.exe?

我想我可以给程序这个文件,但 _MEI 文件夹是一个临时目录,似乎每次都会创建。我尝试将 chrome_windows.exe 放在其他地方,例如 System32 或 file.py 或创建的 .exe 所在的同一目录,也会发生相同的错误。

所以我想我必须让这个程序以某种方式看到 chrome_windows.exe,但我不知道如何。我已经有了

from webbot import Browser

在我的脚本中,但显然我需要的不仅仅是这个。不知道是什么。

请注意,我并不担心 Python 程序是否在其自己创建的 .exe 中包含 chrome_windows.exe。我的意思是,那很好,但如果编码更简单,只需将 chrome_windows.exe 推入程序运行所在的计算机上的目录中,并在程序中包含指向它的内容,那么也可以。我觉得这个问题的答案可能很简单,所以我正在寻找最简单、最优雅的解决方案。

python python-3.x
2个回答
1
投票

Webbot
源中webdriver的路径似乎是
driverpath = os.path.join(os.path.split(__file__)[0] , 'drivers{0}{1}'.format(os.path.sep , driverfilename))
(当编译为exe时,文件目录位于TEMP中)。

您可以使用源代码制作自己的类并更改目录路径(github.com/nateshmbhat/webbot/blob/master/webbot/webbot.py)。


0
投票

您也可以将 chrome_windows.exe 包含在可执行文件中:

pyinstaller --onefile --add-data="path_to_your/chrome_windows.exe;./webbot/drivers" file.py
© www.soinside.com 2019 - 2024. All rights reserved.