运行 pyinstaller 另一台装有 Chromedriver 的电脑
Running pyinstaller another pc with Chromedriver
我正在尝试在 pyinstaller 的可执行文件中添加 Chrome 驱动程序。虽然这是可能的,但似乎我在另一台计算机上尝试 运行 时收到以下错误消息。
我已经尝试了很多帖子,包括这个,但不幸的是,这没有提供预期的结果。最好的情况是当 chrome exe 位于同一个文件夹中时,我可以 运行 它在我自己的计算机上,这没有帮助。
代码 1:
Main.py
from selenium import webdriver
driver = webdriver.Chrome()
在另一台电脑上 运行ning 时得到的结果:
错误 1:
找不到Chrome路径
C:\Users\Aperture Science\Desktop>123.exe
Traceback (most recent call last):
File "site-packages\selenium\webdriver\common\service.py", line 74, in start
File "subprocess.py", line 709, in __init__
File "subprocess.py", line 997, 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 "main.py", line 42, in <module>
File "main.py", line 33, in main
File "site-packages\selenium\webdriver\chrome\webdriver.py", line 68, in __init__
File "site-packages\selenium\webdriver\common\service.py", line 81, 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
[2228] Failed to execute script main
我该如何解决这个问题?
我从 link 得到的提供:
代码 2:
from selenium import webdriver
import os, sys, inspect
current_folder = os.path.realpath(os.path.abspath(os.path.split(inspect.getfile(inspect.currentframe() ))[0]))
chromedriver = os.path.join(current_folder,"chromedriver.exe")
driver = webdriver.Chrome(executable_path = chromedriver)
driver.get("http://www.imdb.com/")
REQUIRES Chrome 设置路径中的 exe,捆绑 chrome 未读取。因此打包 chrome 无法按预期工作。
使用--add-binary
在应用程序中捆绑驱动程序:
pyinstaller -F --add-binary "C:\drivers\chromedriver.exe";"." script.py
并使用sys._MEIPASS
获取提取驱动程序的文件夹:
import sys, os, time
from selenium import webdriver
if __name__ == "__main__":
if getattr(sys, 'frozen', False):
# executed as a bundled exe, the driver is in the extracted folder
chromedriver_path = os.path.join(sys._MEIPASS, "chromedriver.exe")
driver = webdriver.Chrome(chromedriver_path)
else:
# executed as a simple script, the driver should be in `PATH`
driver = webdriver.Chrome()
driver.get("https://whosebug.com")
time.sleep(5)
driver.quit()
或者简单地说:
pyinstaller --onefile script.py --paths "C:\drivers\chromedriver.exe"
我正在尝试在 pyinstaller 的可执行文件中添加 Chrome 驱动程序。虽然这是可能的,但似乎我在另一台计算机上尝试 运行 时收到以下错误消息。
我已经尝试了很多帖子,包括这个
代码 1:
Main.py
from selenium import webdriver
driver = webdriver.Chrome()
在另一台电脑上 运行ning 时得到的结果:
错误 1:
找不到Chrome路径
C:\Users\Aperture Science\Desktop>123.exe
Traceback (most recent call last):
File "site-packages\selenium\webdriver\common\service.py", line 74, in start
File "subprocess.py", line 709, in __init__
File "subprocess.py", line 997, 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 "main.py", line 42, in <module>
File "main.py", line 33, in main
File "site-packages\selenium\webdriver\chrome\webdriver.py", line 68, in __init__
File "site-packages\selenium\webdriver\common\service.py", line 81, 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
[2228] Failed to execute script main
我该如何解决这个问题?
我从 link 得到的提供:
代码 2:
from selenium import webdriver
import os, sys, inspect
current_folder = os.path.realpath(os.path.abspath(os.path.split(inspect.getfile(inspect.currentframe() ))[0]))
chromedriver = os.path.join(current_folder,"chromedriver.exe")
driver = webdriver.Chrome(executable_path = chromedriver)
driver.get("http://www.imdb.com/")
REQUIRES Chrome 设置路径中的 exe,捆绑 chrome 未读取。因此打包 chrome 无法按预期工作。
使用--add-binary
在应用程序中捆绑驱动程序:
pyinstaller -F --add-binary "C:\drivers\chromedriver.exe";"." script.py
并使用sys._MEIPASS
获取提取驱动程序的文件夹:
import sys, os, time
from selenium import webdriver
if __name__ == "__main__":
if getattr(sys, 'frozen', False):
# executed as a bundled exe, the driver is in the extracted folder
chromedriver_path = os.path.join(sys._MEIPASS, "chromedriver.exe")
driver = webdriver.Chrome(chromedriver_path)
else:
# executed as a simple script, the driver should be in `PATH`
driver = webdriver.Chrome()
driver.get("https://whosebug.com")
time.sleep(5)
driver.quit()
或者简单地说:
pyinstaller --onefile script.py --paths "C:\drivers\chromedriver.exe"