使用 cx_Freeze 编译为 exe 时没有这样的文件或目录 webdriver_prefs.json
No such file or directory webdriver_prefs.json when compiling to exe with cx_Freeze
我使用 selenium firefox webdriver 编写了一个应用程序并使用 cx_Freeze 编译了它。当我启动我的应用程序时,出现错误:
Traceback (most recent call last):
File "c:1\ui\__init__.py", line 27, in login
self.browser = self.webdriver.Firefox()
File "C:\Python34\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 47, in __init__
self.profile = FirefoxProfile()
File "C:\Python34\lib\site-packages\selenium\webdriver\firefox\firefox_profile.py", line 63, in __init__
WEBDRIVER_PREFERENCES)) as default_prefs:
FileNotFoundError: [Errno 2] No such file or directory: 'C:\111\build\exe.win32-3.4\library.zip\selenium\webdriver\firefox\webdriver_prefs.json'
但我的library.zip实际上包含webdriver_prefs.json和webdriver.xpi。我使用下一个 setup.py 文件来添加它:
import sys
from cx_Freeze import setup, Executable
base= 'C:\Python34\Lib\site-packages\selenium\webdriver'
includes = [
('%s\firefox\webdriver.xpi' %(base), 'selenium/webdriver/firefox/webdriver.xpi'),
('%s\firefox\webdriver_prefs.json '%(base), 'selenium/webdriver/firefox/webdriver_prefs.json')
]
build_exe_options = {
"packages": ["os"],
"excludes": ["tkinter"],
"zip_includes": includes,
}
setup(
name = "lala",
version = "0.1",
description = "lalala",
options = {"build_exe": build_exe_options},
executables = [Executable("app.py", base=base)],
)
我应该以某种方式为我的可执行文件注册这些文件吗?为什么 traceback 使用两种方式(一个反斜杠和两个反斜杠)打印文件路径?
最后我没能用 cx_Freeze
解决问题,但后来我尝试了 PyInstaller
并且效果很好!顺便说一下,它已经支持 Python3。我使用了那个命令:
c:\Python34\Scripts\pyinstaller.exe -p C:\Python34\Lib\site-packages -F app.py
我使用 selenium firefox webdriver 编写了一个应用程序并使用 cx_Freeze 编译了它。当我启动我的应用程序时,出现错误:
Traceback (most recent call last):
File "c:1\ui\__init__.py", line 27, in login
self.browser = self.webdriver.Firefox()
File "C:\Python34\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 47, in __init__
self.profile = FirefoxProfile()
File "C:\Python34\lib\site-packages\selenium\webdriver\firefox\firefox_profile.py", line 63, in __init__
WEBDRIVER_PREFERENCES)) as default_prefs:
FileNotFoundError: [Errno 2] No such file or directory: 'C:\111\build\exe.win32-3.4\library.zip\selenium\webdriver\firefox\webdriver_prefs.json'
但我的library.zip实际上包含webdriver_prefs.json和webdriver.xpi。我使用下一个 setup.py 文件来添加它:
import sys
from cx_Freeze import setup, Executable
base= 'C:\Python34\Lib\site-packages\selenium\webdriver'
includes = [
('%s\firefox\webdriver.xpi' %(base), 'selenium/webdriver/firefox/webdriver.xpi'),
('%s\firefox\webdriver_prefs.json '%(base), 'selenium/webdriver/firefox/webdriver_prefs.json')
]
build_exe_options = {
"packages": ["os"],
"excludes": ["tkinter"],
"zip_includes": includes,
}
setup(
name = "lala",
version = "0.1",
description = "lalala",
options = {"build_exe": build_exe_options},
executables = [Executable("app.py", base=base)],
)
我应该以某种方式为我的可执行文件注册这些文件吗?为什么 traceback 使用两种方式(一个反斜杠和两个反斜杠)打印文件路径?
最后我没能用 cx_Freeze
解决问题,但后来我尝试了 PyInstaller
并且效果很好!顺便说一下,它已经支持 Python3。我使用了那个命令:
c:\Python34\Scripts\pyinstaller.exe -p C:\Python34\Lib\site-packages -F app.py