python-3.x - 使用 cx_Freeze 创建的可执行文件在 Windows 上崩溃
问题描述
我正在尝试使用 cx_Freeze 创建一个可执行文件,它会创建 exe,但是每当我尝试启动它时,它就会崩溃并出现一些错误(见下文)。
setup.py
:
from cx_Freeze import setup, Executable
import sys
import glob
import os
import zlib
import shutil
base = None
# PYTHON_INSTALL_DIR = os.path.dirname(os.path.dirname(os.__file__))
os.environ['TCL_LIBRARY'] = "C:\\ProgramData\\Anaconda3\\tcl\\tcl8.6"
os.environ['TK_LIBRARY'] = "C:\\ProgramData\\Anaconda3\\tcl\\tk8.6"
os.environ['TESSERACT_LIBRARY'] = "E:\\Tesseract-OCR"
if sys.platform == 'win32':
base = "Win32GUI"
if sys.platform == 'win64':
base = "Win64GUI"
include = [ 'jinja2', 'jinja2.ext',] #Include packages
includefiles = ['gui/']
options = {'build_exe':{'includes':include,'include_files': includefiles}}
flaskapp = Executable(script="scan_config.py",
targetName="D2D.exe",
)
setup(
name="D2D",
version="1.0",
author="abc",
description="D2d",
options={
'build_exe': {
'include_files': includefiles,
'includes': include,
'build_exe': "build"
}
},
executables=[flaskapp]
)
错误:
回溯(最后一次调用):文件“scan_config.py”,第 5 行,文件“C:\Users\abc\AppData\Roaming\Python\Python37\site-packages\flask__init__.py”,第 14 行,来自jinja2 导入转义文件“C:\ProgramData\Anaconda3\lib\site-packages\jinja2__init__.py”,第 82 行,_patch_async() 文件“C:\ProgramData\Anaconda3\lib\site-packages\jinja2__init__.py”,第 78 行,在 _patch_async from jinja2.asyncsupport import patch_all File "C:\ProgramData\Anaconda3\lib\site-packages\jinja2\asyncsupport.py",第 13 行,在 import asyncio File "C:\ProgramData\Anaconda3\lib\ asyncio__init__.py”,第 8 行,来自 .base_events 导入 * 文件“C:\ProgramData\Anaconda3\lib\asyncio\base_events.py”,第 37 行,来自 .base_events 导入常量 ImportError:无法导入名称'
PS 我也试过 PyInstaller,但我不知道如何包含 pytesseract。
解决方案
我将python版本降级为3.6。这解决了大部分错误。对于 jinja2 我做了pip install https://github.com/pallets/jinja/zipball/master
,并且还包括了mkl
&libiomp5md
文件。在多处理文件夹中,我更改Pool.pyc
为pool.pyc
推荐阅读
- .net - Microsoft.Azure.Management.DataLake.Store 与 Microsoft.Azure.DataLake.Store
- c++ - 'juce::WildcardFileFilter' 的初始化没有匹配的构造函数
- android - Cordova 8,Android 7.1.0,无法安装任何插件
- svn - 如何快速检查 svn 存储库连接以进行脚本编写
- python - 错误:无法从 DataFrame 中删除无限值
- c++ - 检查模板化方法的返回类型
- python - asfreq() 返回一个空的数据帧
- ios - 我可以为 UICollectionView 中的不同部分设置不同的布局吗?
- python - 将包含整数和字符串的 .dat 文件连接在一起
- laravel - 每个包多个配置