为什么 cx_Freeze 在运行 exe 文件时会出现此错误?

我是 cx_Freeze 的新用户,我想用所有需要的依赖项打包我的 python 文件。


我使用Python3。


我在具有依赖项的 python virtualenv 下工作,例如 tensorflow, sklearn, matplotlib, python-vlc...


以下是在 Windows 上重现相同错误所需的所有文件。


我要安装的requirements.txt


absl-py==0.7.0

altgraph==0.16.1

astor==0.7.1

audioread==2.1.6

certifi==2018.11.29

chardet==3.0.4

cx-Freeze==5.1.1

cycler==0.10.0

decorator==4.3.2

distlib==0.2.8

future==0.17.1

gast==0.2.2

grpcio==1.18.0

h5py==2.9.0

idna==2.8

Jinja2==2.10

joblib==0.13.1

Keras-Applications==1.0.7

Keras-Preprocessing==1.0.9

kiwisolver==1.0.1

librosa==0.6.2

llvmlite==0.27.0

macholib==1.11

Markdown==3.0.1

MarkupSafe==1.1.0

matplotlib==3.0.2

numba==0.42.0

numpy==1.16.1

pefile==2018.8.8

protobuf==3.6.1

py2exe==0.9.2.2

PyInstaller==3.4

pynsist==2.3

pyparsing==2.3.1

pypiwin32==223

pysrt==1.1.1

python-dateutil==2.8.0

python-vlc==3.0.4106

pywin32==224

pywin32-ctypes==0.2.0

requests==2.21.0

requests-download==0.1.2

resampy==0.2.1

scikit-learn==0.20.2

scipy==1.2.0

six==1.12.0

sklearn==0.0

tensorboard==1.12.2

tensorflow==1.12.0

termcolor==1.1.0

tornado==5.1.1

urllib3==1.24.1

watson-developer-cloud==2.8.0

websocket-client==0.48.0

Werkzeug==0.14.1

yarg==0.1.9

我有一个主要的 python 文件IHM.py,它从另外两个 python 文件sync.py和neurnet.py.


暮色呼如
浏览 208回答 2
2回答

呼如林

我在cx_Freeze5.1.1的安装脚本中看到以下潜在问题:您正在使用numpy(并且matplotlib取决于numpy)。为了cx_Freeze正确冻结numpy,需要将其添加到选项packages列表中build_exe。对于cx_Freeze5.1.1 版,TCL/TK DLL 需要包含在lib构建目录的子目录中。您可以通过将元组传递给列表选项(source, destination)的相应条目来实现include_files。此外,动态查找 TCL/TK DLL 的位置会更安全。总之,尝试在您的安装脚本中进行以下修改:PYTHON_INSTALL_DIR = os.path.dirname(sys.executable)os.environ['TCL_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tcl8.6')os.environ['TK_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tk8.6')buildOptions = dict(    packages = ["numpy"],    excludes = [],    includes = ["idna.idnadata"],    include_files=[(os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tk86t.dll'),                    os.path.join('lib', 'tk86t.dll')),                   (os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tcl86t.dll'),                    os.path.join('lib', 'tcl86t.dll'))])如果此修改仍然不起作用,请从最小的tkinter应用程序开始,例如通过注释掉所有导入,但tkinter在您发布的示例应用程序中并使其在您的系统上运行。然后一个接一个地重新添加您需要的模块 ( numpy, matplotlib, ...) 并检查未冻结和冻结的应用程序是否在每一步都正常工作。例如,您可以向示例应用程序添加一个消息框,并在那里打印您导入的每个模块的版本。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python