Py2exe和selenium - IOError:[Errno 2]没有这样的文件或目录:'\\ dist \\ main.exe \\ selenium \\ webdriver \\ firefox \\ webdriver_prefs.json'

mir*_*irx 7 python firefox selenium json

我写了一个简单的应用程序,它使用selenium来浏览页面并下载它们的源代码.现在我想让我的应用程序Windows可执行.

我的setup.py档案:

from distutils.core import setup
import py2exe, sys, os
sys.argv.append('py2exe')

setup(
    options = {'py2exe': {'bundle_files': 1,
                          "dll_excludes": ['w9xpopen.exe', 'MSVCP90.dll', 'mswsock.dll', 'powrprof.dll', 'MPR.dll', 'MSVCR100.dll', 'mfc90.dll'],
                          'compressed': True,"includes":["selenium"],
                          }
              },
    windows = [{'script': "main.py", "icon_resources": [(1, "hacker.ico")]}],
    zipfile = None
)
Run Code Online (Sandbox Code Playgroud)

我的程序(main.py)(带setup.py文件)位于C:\Documents and Settings\student\Desktop.Py2exe构建我的exe C:\Documents and Settings\student\Desktop\dist.

我复制了两个webdriver.xpiwebdriver_prefs.json文件C:\Documents and Settings\student\Desktop\dist\selenium\webdriver\firefox\,但是在尝试启动我的应用程序时遇到错误:

Traceback (most recent call last):
  File "main.py", line 73, in <module>
  File "main.py", line 58, in check_file
  File "main.py", line 25, in try_to_log_in
  File "selenium\webdriver\firefox\webdriver.pyo", line 47, in __init__
  File "selenium\webdriver\firefox\firefox_profile.pyo", line 63, in __init__
IOError: [Errno 2] No such file or directory: 'C:\\Documents and Settings\\student\\Desktop\\dist\\main.exe\\selenium\\webdriver\\firefox\\webdriver_prefs.json'
Run Code Online (Sandbox Code Playgroud)

怎么解决这个?

实际上,它适用于这样的setup.py文件:

from distutils.core import setup
import py2exe, sys, os
sys.argv.append('py2exe')

wd_path = 'C:\\Python27\\Lib\\site-packages\\selenium\\webdriver'
required_data_files = [('selenium/webdriver/firefox',
                        ['{}\\firefox\\webdriver.xpi'.format(wd_path), '{}\\firefox\\webdriver_prefs.json'.format(wd_path)])]

setup(
    windows = [{'script': "main.py", "icon_resources": [(1, "hacker.ico")]}],
    data_files = required_data_files,
    options = {
               "py2exe":{
                         "skip_archive": True,
                        }
               }
)
Run Code Online (Sandbox Code Playgroud)

但问题是我需要构建SINGLE可执行文件.

tot*_*i08 2

您是否尝试过查看“bundle_files = 1”问题的答案它帮助我解决了这个具体问题。