ValarMayar
@ValarMayar
Д У Р А Ч О К / недопрограммист графоман

Как решить проблему с путями Mac OS?

Добрый день.
Есть небольшая программка написанная на python(selenium) с прикрученным PyQt5, её я пакую через pyinstaller в 1 файл , но при попытке запустить собранный файл говорит о том, что chromedriver не найден, даже если я кладу chromedriver рядом с созданным файлом.

В коде пути к chromedriver я прописываю так
driver_path = os.getcwd()
chrome_options = Options()
chrome_options.add_argument('--log-level=3')
chrome_options.add_argument("--start-maximized")
self.driver = webdriver.Chrome(options=chrome_options, executable_path=driver_path + '/chromedriver')


Суть проблемы. При простом запуске без сборки в 1 файл, те python3 main.py - всё работает хорошо, видит все нужные файлы, но при упаковке не видит

структура папки в которую pyinstaller кидает собранный файл:
dist/
.... main -- это файл собранный через pyinstaller(pyinstaller --onefile main.py)
.... chromedriver

Как видно chromedriver лежит рядом, но при попатке запустить собранный файл всё та же история,
selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH.


Абсолютные пути работает нормально, пример:
self.driver = webdriver.Chrome(options=chrome_options, executable_path='user/downloads/program/chromedriver')

Это не правильно, ибо мне нужно скажем скинуть картинку в папку с собранным файлом, запустить программу, обработать картинку

для картинок я пытался писать
img_name = 'privet.png'
self.driver.find_element_by_class_name('WithUpload-FileInput').send_keys(os.getcwd() + f'{img_name}')

В итоге работают только абсолютные пути, прописанные вручную в коде

У меня нет Макоси, поэтому опытным путем не получается, что удивительно, ведь работаю я на линукс.

Подозреваю, что проблема в pyinstaller, но не уверен
Спасибо
  • Вопрос задан
  • 531 просмотр
Решения вопроса 1
hottabxp
@hottabxp Куратор тега Python
Сначала мы жили бедно, а потом нас обокрали..
Киньте chromedriver в папку, которая есть в PATH (надеюсь, такое есть в MacOS).

sudo mv chromedriver /usr/local/bin
sudo chmod +x /usr/local/bin/chromedriver
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы