我通常将调用 setup.py 命令的步骤放入 .bat 文件中以便于召回。
以下是在 COMPILE.BAT 文件中的简单代码:
python setup.py build
@ECHO:
@ECHO . : ` . * F I N I S H E D * . ` : .
@ECHO:
@Pause
而且setup.py被组织成易于定制的参数,让您设置图标、添加导入模块库:
APP_NAME = "Meme Studio";
Python_File = "app.py";
Icon_Path = "./res/iconApp48.ico";
UseFile = ["LANGUAGE.TXT","THEME.TXT"];
UseAllFolder = True;
Import = ["infi","time","webbrowser", "cv2","numpy","PIL","tkinter","math","random","datetime","threading","pathlib","os","sys"];
Import+=["pkg_resources","xml","email","urllib","ctypes", "json","logging"]
from os import walk
def dirFolder(folderPath="./"): return next(walk(folderPath), (None, None, []))[1];
def dirFile(folderPath="./"): return next(walk(folderPath), (None, None, []))[2];
if UseAllFolder: UseFile += dirFolder();
import sys, pkgutil;
from cx_Freeze import setup, Executable;
BasicPackages=["collections","encodings","importlib"] + Import;
def AllPackage(): return [i.name for i in list(pkgutil.iter_modules()) if i.ispkg];
def notFound(A,v):
try: A.index(v); return False;
except: return True;
build_msi_options = {
'add_to_path': False,
"upgrade_code": "{22a35bac-14af-4159-7e77-3afcc7e2ad2c}",
"target_name": APP_NAME,
"install_icon": Icon_Path,
'initial_target_dir': r'[ProgramFilesFolder]\%s\%s' % ("Picox", APP_NAME)
}
build_exe_options = {
"includes": BasicPackages,
"excludes": [i for i in AllPackage() if notFound(BasicPackages,i)],
"include_files":UseFile,
"zip_include_packages": ["encodings"]
}
setup( name = APP_NAME,
options = {"build_exe": build_exe_options},
executables = [Executable(
Python_File,
base='Win32GUI',
icon=Icon_Path,
targetName=APP_NAME,
copyright="Copyright (C) 2900AD Muc",
)]
);
上面代码中的模块库列表是可用的opencv + pillow + win32应用程序所需的最小列表。
我的项目文件组织示例:
![enter image description here](https://istack.dev59.com/geV9p.webp)
========== 更 新 ==========
尽管 cx_Freeze 是创建安装程序的好方法,但如果您构建多个使用大型库模块(如 opencv、torch、ai 等)的软件项目,则会真正消耗磁盘空间... 有时,用户下载安装程序后,在安装后收到假阳性病毒警报,指向您的 .exe 文件。
因此,您应该考虑使用 SFX 归档 (.exe) 您的应用程序包,并将 SFX Python 包分开以在应用程序项目之间共享。
- 你可以创建一个.bat文件来启动.py文件,然后使用Microsoft IExpress.exe将.bat文件转换为.exe文件。
- 接下来,你可以使用Resource Hacker更改.exe图标为自己的图标:http://www.angusj.com/resourcehacker/
- 然后,使用PeaZip创建你的软件包的SFX归档文件:https://peazip.github.io/
- 最后更改图标。
- Python软件包可以打包成.exe文件,并且可以使用.bat文件进行PATH注册,该文件也可以转换为.exe文件。
- 如果你学习更多关于.bat文件中的命令,并在Resource Hacker和PeaZip & IExpress中进行实验,你可以将你的应用程序项目、Python软件包组合成一个单独的.exe文件。它会自动安装用户机器所需的内容。虽然这种方式更加复杂和困难,但是你可以定制许多安装体验,包括创建桌面快捷方式、安装UI、添加到应用程序和功能列表、卸载能力、便携式应用程序、序列号要求、自定义许可协议、快速窗口运行框等等,但你获得的重要特性是非病毒误报阻止,当用户安装许多你的Python图形应用程序时,减少200MB到多GB。
setup.py
文件和你的 Python 版本吗? - wkl