2016-12-07 7 views
1

ここの答え(How to include chromedriver with pyinstaller?)に示唆されているようにPyinstaller仕様ファイルを更新した後も、chromedriverはまだ生成されたアプリケーションファイルからアクセスされません。問題は.\\selenium\\webdriverである可能性がありますか?それは答えからコピーされたもので、Windows OS固有のものかどうかはわかりません。Pyinstallerで生成されたアプリケーションが指定されたバイナリ(chromedriver)にリンクしていません

ターミナルワークでUNIX実行ファイルを実行し、chromedriverにアクセスします。

フルスペック・ファイルは次のとおりです。

# -*- mode: python -*- 

block_cipher = None 


a = Analysis([‘scriptname.py'], 
      pathex=['/Users/Name/Desktop'], 
      binaries=[('/usr/local/bin/chromedriver', '.\\selenium\\webdriver')], 
      datas=None, 
      hiddenimports=[], 
      hookspath=[], 
      runtime_hooks=[], 
      excludes=[], 
      win_no_prefer_redirects=False, 
      win_private_assemblies=False, 
      cipher=block_cipher) 
pyz = PYZ(a.pure, a.zipped_data, 
      cipher=block_cipher) 
exe = EXE(pyz, 
      a.scripts, 
      a.binaries, 
      a.zipfiles, 
      a.datas, 
      name=‘app name’, 
      debug=False, 
      strip=False, 
      upx=True, 
      console=False) 
app = BUNDLE(exe, 
      name=‘appname.app', 
      icon=None, 
      bundle_identifier=None) 

ラインpyinstaller appname.spec scriptname.py --windowed --onefileアプリを生成するための端末で使用されています。

+1

はい、「\\ \\セレンwebdriverを」をWindowsの相対パスを示しています。クロムドライババイナリをバンドルに配置する場所です。 Unixでは、./selenium/webdriverとなります。しかし、私はこれをWindowsで試してみましたが、まだクロムドライブを置いていました。生成されたバンドルにchromedriverを実行可能なdist/selenium/webdriverディレクトリがありますか? – monami

+0

ありがとうございます。しかし、現在は、クロムドライバが/ usr/bin(/ usr/local/binではなく)に置かれているだけで、specファイルに何が置かれているかに関係なく表示されます。結果のapp/exeファイルにchromedriverをバンドルすることができますか? – Phillip

+1

pyinstallerを実行した後、chromeriver実行ファイルは "bundlepath"/dist/selenium dirに存在しますか?あなたのpythonコードでchromedriverをどうやってセットアップしますか?バンドルされているときは、PATHは使用しませんが、chromedriverへのパスを次のように設定します(リモートの例です): 'dir = os.path.dirname(__ file__) chrome_path = os.path.join(dir、 'webdriver'、 'chromedriver.exe') サービス= service.Service(chrome_path)... ' – monami

答えて

1

はい、Windowsのパスです。 Unixでは、代わりに./selenium/webdriverを使用してください。バンドルにchromeriverバイナリを配置する場所を指定します。したがって、pyinstallの後にchromedriverは/path/to/bundle/dist/selenium/webdriverになります。
その後のコードで、あなたがそれに到達するために、このようなものを使用する必要があります(それは遠隔例です):

dir = os.path.dirname(__file__) 
chrome_path = os.path.join(dir, selenium','webdriver','chromedriver.exe') 
service = service.Service(chrome_path) ... 
関連する問題