安装mayavi命令,使用cxfreeze打包python脚本
pip install numpy 出现A new release of pip is available: 23.2.1 -> 24.2 输入: python -m pip install --upgrade pip setuptools wheel pip install PyQt5 pip install vtk
pip install mayavi
pip install scipy
pip install configobj
查看当前项目的依赖包:
pip freeze > requirements.txt
这个命令会将当前环境中安装的所有 Python 包及其版本信息写入 requirements.txt 文件中。 PS:如果你想在另外一个环境安装这些依赖包可以使用这个命令
pip install -r requirements.txt
2、使用cx freeze打包
新建一个脚本,这里为:setup.py
pip install cx_Freeze
from cx_Freeze import setup, Executable build_exe_options = { "packages": ["altgraph","apptools","configobj","contourpy","cx_Freeze","cx_Logging","cycler","envisage","importlib_metadata","importlib_resources","kiwisolver","lief","matplotlib","mayavi","numpy","packaging","pefile","pyface","pyparsing","PyQt5","six","traits","traitsui","typing_extensions","vtk","zipp","scipy"], 'excludes': [], } setup( name="Test", version="1.0", description="zz.py", author="master", options={ "build_exe": build_exe_options}, executables=[Executable(script="zz.py", base="win32gui")])
packages:指定要包含在构建中的包列表。这些是你的脚本运行所需的依赖项。
excludes:这是一个空列表,表示没有包被排除在构建之外。
name:应用程序的名称。
version:应用程序的版本。
description:应用程序的简短描述。
author:应用程序的作者。
options:包括之前定义的构建选项。
executables:这是一个 Executable 对象的列表。每个 Executable 对象指定一个要转换为可执行文件的脚本。
script:应用程序的主脚本。
base:设置为 "win32gui",表示该应用程序是一个 Windows GUI 应用程序。
打包
python setup.py build
打开exe程序如果发生报错:
则根据报错信息,比如报错信息如下图的时候把虚拟环境下的dll复制到exe程序下的lib文件夹,然后把整个vtk.libs复制到lib文件下,即可解决
不单单只报一个错误,只需要根据错误找到缺少的文件复制过去就可以了,注意找到错误关键字,ModuleNotFundError,早不到可以用everything工具搜索。我感觉应该是VTK打包的时候会丢失文件,主要是使用了VTK依赖包的时候才会在打包出现各种问题。