是否有一种方法可以将二进制文件(例如Chromedriver)与Pyinstaller编译的单个文件应用程序/EXE捆绑



如我在这里的答案中所述,在pyinstaller spec文件( binaries=[('/usr/bin/chromedriver', './selenium/webdriver')])中,在 binaries中设置了chromedriver的路径没有效果(除非错误地设置了)。也就是说,只要在路径中(在这种情况下为/usr/bin)就可以访问Chromedriver。我的问题是将Chromedriver捆绑在后台的可能性,因此不必手动安装在另一台计算机上。

我与pyinstaller成功地将Chromedriver捆绑在一起(尽管不幸的是,我的Virusscanner标记了Exe之后,但这是另一个问题)

我想您的问题是您在脚本中没有给WebDriver的正确路径(使用关键字exputable_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",".")],
....

以这种方式,只要脚本正确地通过关键字executable_path

,chromedriver被存储在主文件夹中,尽管它应该不重要,但它应该不重要。

免责声明: - 我没有使用单文件,但这并不能有所作为。-My OS是Windows

最新更新