2016-12-08 2 views
0

私の質問hereの回答に記載されているように、Pyinstaller仕様ファイル(binaries=[('/usr/bin/chromedriver', './selenium/webdriver')])のbinariesのchromedriverのパスを設定しても、正しく設定されていない限り効果はありません。つまり、chromedriverはPATH(この場合は/ usr/bin)内にある限りアクセスされます。私の質問は、他のマシンに手動でインストールする必要がないように、クロムドライブをバックグラウンドでバンドルする可能性について考えています。バイナリファイル(chromedriverなど)をPyinstallerでコンパイルされた1つのファイルapp/exeにバンドルする方法はありますか?

答えて

3

I pyInstallerのと正常にバンドルさchromedriver(残念ながら、私はexeファイルを実行した後、私のvirusscannerは、それをフラグが付けられますが、それは別の問題だが)

私はあなたの問題はあなたがwebdriverをへの正しいパスを与えていないということだと思いますスクリプト内で(キーワードexecutable_pathを使用して)また、クロムドライバーをデータファイルとして含めましたが、違いがあるかどうかはわかりません。

ここは私の例です。

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は次のように、メインフォルダに保存しましたスクリプトexecutable_path

免責事項: - 私は1つのファイル設定を使用していませんでしたが、それは違いはありません。 -my OSはウィンドウです

+0

関連する投稿を明確にして整理するために、私はこの問題が別の場所で書かれた投稿で解決されたと考えています:http://stackoverflow.com/questions/41009492/pyinstaller-generated-app-does -not-link-to-the-specified-binary-chromedriverを指定します。答えを投稿した人に最後に行ったコメントが理由を示しています。 – Phillip

+0

はい、経路が理由でした – Phillip

関連する問題