Python Pyinstaller с графическим интерфейсом Tkinter Selenium - PullRequest
0 голосов
/ 01 февраля 2019

Я не знал, как создать исполняемую программу Python, прежде чем я спросил здесь.К счастью, я получил быстрый ответ и смог преобразовать свой скрипт в исполняемую программу.Исполняемый файл отлично работает, но только на моем компьютере.Это две ошибки, которые я получаю, я чувствую, что мне нужно изменить скрипт, чтобы найти драйвер chrome. Я не уверен, где Pyinstaller все сохранил.

Exception in Tkinter callback
Traceback (most recent call last):
File "site-packages\selenium\webdriver\common\service.py", line 76, in start
File "subprocess.py", line 775, in __init__
File "subprocess.py", line 1178, in _execute_child
FileNotFoundError: [WinError 2] The system cannot find the file specified

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "tkinter\__init__.py", line 1705, in __call__
File "MarijuanaDoctors.py", line 25, in search
File "site-packages\selenium\webdriver\chrome\webdriver.py", line 68, in __init__
File "site-packages\selenium\webdriver\common\service.py", line 83, in start
selenium.common.exceptions.WebDriverException: Message: 'chromedriver' 
executable needs to be in PATH. Please see 
https://sites.google.com/a/chromium.org/chromedriver/home

1 Ответ

0 голосов
/ 01 февраля 2019

Вы можете связать ваш "chromedriver.exe" вместе со своим сценарием, используя Pyinstaller, как это:

pyinstaller --add-binary="localpathtochromedriver;." myscript.py

Это скопирует файл "chromedriver.exe" в ту же папку, что и ваш основной .exe (Или в случае использования одного файла pyinstaller, эта заливка будет извлечена во временную папку при использовании программы exe).

В вашем скрипте вы можете проверить, выполняете ли вы скрипт нормально или из пакета (exe-файл)mode и соответственно выберите путь к chromedriver.exe. (Это изменение в сценарии может быть общим для опции пакета одного файла / папки в pyinstaller)

import sys
if getattr(sys, 'frozen', False ):
    #Running from exe, so the path to exe is saved in sys._MEIPASS
    chrome_driver = os.path.join(sys._MEIPASS, "chromedriver.exe")
else:
    chrome_driver = 'localpathtochromedriver.exe'
driver = webdriver.Chrome(executable_path=chrome_driver)

Вы можете прочитать об этом в документации здесь .

Ограничение : пользователь вашего .exe должен иметь установленный Chrome в своей системе, а версия Chrome должна работать с прилагаемым хроматографическим драйвером.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...