一尘不染

有没有办法将二进制文件(例如chromedriver)与通过Pyinstaller编译的单个文件app / exe捆绑在一起?

selenium

正如在回答我的问题提到这里,设置在道路chromedriver
binaries在Pyinstaller规范文件(binaries=[('/usr/bin/chromedriver', './selenium/webdriver')])没有效果(除非它被设置不正确)。也就是说,只要chromedriver在PATH中(本例中为/ usr/ bin),就可以对其进行访问。我的问题涉及在后台捆绑chromedriver的可能性,因此不必手动将其安装在另一台计算机上。


阅读 274

收藏
2020-06-26

共1个答案

一尘不染

我成功地将chromedriver与pyinstaller捆绑在一起(尽管不幸的是,在我运行exe后,我的病毒扫描程序将其标记了出来,但这是另一个问题)

我猜您的问题是您没有在脚本中使用WebEx驱动程序提供正确的路径(使用关键字execute_path)。另外,我不确定如何将chromedriver包含在数据文件中。

这是我的例子。

sel_ex.py:

from selenium import webdriver

import os, sys, inspect     # http://stackoverflow.com/questions/279237/import-a-module-from-a-relative-path
current_folder = os.path.realpath(os.path.abspath(os.path.split(inspect.getfile(inspect.currentframe() ))[0]))

def init_driver():
    chromedriver = os.path.join(current_folder,"chromedriver.exe")
    # via this way, you explicitly let Chrome know where to find 
    # the webdriver.
    driver = webdriver.Chrome(executable_path = chromedriver) 
    return driver

if __name__ == "__main__":
    driver = init_driver()
    driver.get("http://www.imdb.com/")

sel_ex.spec:

....
binaries=[],
datas=[("chromedriver.exe",".")],
....

以这种方式,chromedriver被存储在主文件夹中,尽管它的存储位置无关紧要,只要脚本通过关键字execute_path的正确路径即可。

免责声明:-我没有使用单一文件设置,但这没有什么区别。-我的操作系统是Windows

2020-06-26