【问题标题】:Is there a way to include the "chromedriver.exe" within a Python program .exe (via pyinstaller)?有没有办法在 Python 程序 .exe(通过 pyinstaller)中包含“chromedriver.exe”?
【发布时间】:2020-08-15 12:00:01
【问题描述】:

社区大家好。这是我的第一个问题,希望以后能对大家有所帮助。与此同时,我正在尝试创建一个简单的程序。这个想法是美元和我的货币(阿根廷比索)之间的货币转换器。我使用 selenium 实现了一个网络爬虫,它使用 chromedriver.exe 存档(我在 Windows 中)。 之后,我使用 pyinstaller 创建了一个 .exe。问题是它对我有用,因为在程序中我指定了这个程序路径,但主要想法是让它完全可移植,所以将它传递给另一台 PC 并且仍然可以工作。谁能帮我解决这个问题? 我尝试的方法是在我传输到另一台 PC 的 .zip 文件中包含 chromedriver.exe,并使用像“C:\dolar”这样的通用路径并将所有文件放在那里。但我真正想要的只是一个有效的存档 .exe。

提前非常感谢!

【问题讨论】:

  • @CavinDsouza 有正确的文章
  • 非常感谢。我听从了这个人的建议并且工作得很好。只有一个细节。在我能够在一个 .exe 中编译它之前,我设法不显示浏览器打开(这是一件可取的事情)。现在,我可以创建一个 .exe 文件,但浏览器正在打开,但无法管理...还有什么建议吗? (目前,这是一个小问题,现在我可以将此 .exe 导出到任何 PC 并工作!只是防病毒软件认为它是木马的小问题,哈哈)。
  • 我的错,这不起作用...我在执行创建的 .exe 时遇到此错误:DevTools 正在侦听 ws://127.0.0.1:64735/devtools/browser/faa489de -7a1f-4d00-b41f-467c856f166b [10804:16396:0501/140019.900:ERROR:browser_switcher_service.cc(238)] XXX Init() Web 浏览器打开,但随后应用程序崩溃。如果我从控制台通过 .py 文件运行它,它就可以正常工作。这让我很头疼。
  • @GustavoKildegaard 如果您使用的是 chromedriver.exe,则应将此参数 --headless 传递给您的 chrome_options,以确保不会弹出浏览器窗口。将您的 .exe 文件保存在特定文件夹中,并将排除规则添加到该文件夹​​的防病毒软件中。这应该可以阻止不必要的延误和误报。

标签: python selenium pyinstaller portability


【解决方案1】:

pyinstaller 的基本思想 --add-binary 然后在你的脚本中使用 sys._MEIPASS - 它将指向带有解压文件的临时文件夹。

来自我的项目:

 def resource_path():
        if hasattr(sys, '_MEIPASS'):
            return os.path.join(sys._MEIPASS, 'media')
        else:
            return ''

所以当我在没有 pyinstaller 的情况下运行它时,我假设所需的文件在当前文件夹中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-03
    • 2021-07-15
    • 1970-01-01
    • 2023-01-06
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    相关资源
    最近更新 更多