【问题标题】:How to create .exe for .py file created in selenium web driver?如何为在 selenium Web 驱动程序中创建的 .py 文件创建 .exe?
【发布时间】:2017-04-10 13:59:20
【问题描述】:

到目前为止,我已经使用了 Py2exe,但不确定如何添加与我在脚本中使用的 firefox 和其他导入包相关的 selenium Web 驱动程序依赖项。

我也探索了 Pyinstaller,但添加依赖项失败。

我是第一次做,所以请建议如何正确地做。

谢谢

【问题讨论】:

    标签: python selenium py2exe pyinstaller


    【解决方案1】:

    您可以使用 py2exe 将您的 python 脚本打包为独立的可执行文件。

    默认情况下 py2exe 会打包所有导入的包。如果你也想打包浏览器,你可能必须使用便携式浏览器。

    您可以将便携式浏览器作为数据添加到您的 py2exe 包中,并在初始化 webdriver 时指定实际路径。

    您可以在下面的类中使用 executable_path 参数指定 firefox 二进制可执行文件。

    webdriver.Firefox(self, firefox_profile=None,firefox_binary=None, timeout=30, capabilities=None, proxy=None, executable_path=geckodriver,  firefox_options=None, log_path=geckodriver.log)  
    

    ** 我没有添加评论的选项,所以写作为答案。

    【讨论】:

      【解决方案2】:

      需要在 setup.py 文件中指定 selenium webdriver 的位置。

      以下代码应该会有所帮助:

      from distutils.core import setup
      import py2exe
      
      # Change the path in the following line for webdriver.xpi
      data_files = [('selenium/webdriver/firefox', ['C:/Python27/Lib/site-packages/selenium/webdriver/firefox/webdriver.xpi'])]
      
      setup(
          name='Name of app',
          version='1.0',
          description='Description of app',
          author='author name',
          author_email='author email',
          url='',
          windows=[{'script': 'test.py'}],   # the main py file
          data_files=data_files,
          options={
              'py2exe':
                  {
                      'skip_archive': True,
                      'optimize': 2,
                  }
          }
      )
      

      【讨论】:

      • 感谢您的回复,这样我就可以创建 exe,但在下面收到一些消息,当我尝试执行 exe 时它什么也没做。以下模块似乎缺少 ['Carbon', 'Carbon.Files', '_scproxy', '_sysconfigdata', 'urllib.parse', 'winreg.CloseKey', 'winreg.HKEY_CURRENT_USER', 'winreg.HKEY_LOCAL_MACHINE', 'winreg.OpenKey'、'winreg.OpenKeyEx'、'winreg.QueryValue'、'winreg.QueryValueEx']
      • *** 二进制依赖 *** 您的可执行文件还依赖于这些不包括在内的 dll,您可能需要也可能不需要分发它们。如果您分发其中任何一个,请确保您拥有许可证,并确保您不分发属于操作系统的文件。 OLEAUT32.dll - C:\WINDOWS\system32\OLEAUT32.dll USER32.dll - C:\WINDOWS\system32\USER32.dll SHELL32.dll - C:\WINDOWS\system32\SHELL32.dll KERNEL32.dll - C:\WINDOWS \system32\KERNEL32.dll ADVAPI32.dll - C:\WINDOWS\system32\ADVAPI32.dll WS2_32.dll - C:\WINDOWS\system32\WS2_32.dll
      【解决方案3】:

      您可能想尝试 CX_Freeze,它添加了您的代码作为单个 .exe 运行所需的所有必要包/依赖项

      pip install cx_Freeze
      

      【讨论】:

      • 嗨,我试过了,但不知何故它没有添加firefox驱动程序,exe或msi无法做任何事情,有没有办法明确添加?
      • 它不会添加 firefox 驱动程序,因为它不是 Python 模块/包。只要您安装了 firefox 驱动程序,您就不会遇到问题,但如果您真的需要与它一起分发,请查找InnoSetup。
      • 谢谢我再次尝试并构建了 exe,当我尝试双击 exe 时它什么也没做。我也尝试以管理员身份运行它。我还构建了 msi 我可以安装 msi 但在程序文件上相同的问题 .exe 没有做任何事情。
      【解决方案4】:

      您可以使用pyinstallercx_freeze 创建python 脚本/应用程序的可执行文件。

      pyinstaller 的命令:

      pyinstaller.exe --onefile --windowed <python file name>
      

      【讨论】:

        猜你喜欢
        • 2011-10-11
        • 1970-01-01
        • 2011-04-09
        • 1970-01-01
        • 2017-03-24
        • 1970-01-01
        • 2021-11-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多