如何制作可安装已下载Python及依赖.whl的安装程序
可行方案:制作自动安装Python+依赖的安装程序
完全可以实现这种安装程序,下面是具体落地步骤,全程用本地文件完成,无需联网:
一、准备工作
- 下载和你开发环境同版本、同架构的Python离线安装包(比如
python-3.10.10-amd64.exe),选官方支持静默安装的离线包。 - 下载所有第三方依赖的
.whl文件:PyMuPDF、pandas、numpy,注意版本要匹配你的Python版本(比如cp310对应Python3.10)和系统架构(win_amd64或win32)。Tkinter、os、time、re是Python标准库,无需额外下载。 - 把你的Python源码文件(比如
main.py)、资源文件(如果有)整理到单独文件夹(比如MyTkApp)。
二、编写自动安装脚本
用批处理脚本(install.bat)实现自动化安装,内容如下:
@echo off chcp 65001 >nul echo 正在安装Python环境... rem 静默安装Python,添加到系统PATH,不安装测试组件 python-3.10.10-amd64.exe /quiet InstallAllUsers=1 PrependPath=1 Include_test=0 echo 正在安装第三方依赖... rem 从本地deps文件夹安装whl,路径按需修改 pip install "%~dp0deps\PyMuPDF-1.23.10-cp310-none-win_amd64.whl" pip install "%~dp0deps\numpy-1.26.0-cp310-none-win_amd64.whl" pip install "%~dp0deps\pandas-2.1.1-cp310-none-win_amd64.whl" echo 正在部署应用文件... rem 将你的应用文件复制到安装目录,这里以Program Files为例 xcopy "%~dp0MyTkApp" "C:\Program Files\MyTkApp\" /E /Y echo 正在创建桌面快捷方式... rem 通过VBS创建快捷方式,避免批处理的局限性 echo Set oWS = WScript.CreateObject("WScript.Shell") > "%temp%\CreateShortcut.vbs" echo sLinkFile = oWS.SpecialFolders("Desktop") ^& "\我的Tkinter工具.lnk" >> "%temp%\CreateShortcut.vbs" echo Set oLink = oWS.CreateShortcut(sLinkFile) >> "%temp%\CreateShortcut.vbs" echo oLink.TargetPath = "python.exe" >> "%temp%\CreateShortcut.vbs" echo oLink.Arguments = "C:\Program Files\MyTkApp\main.py" >> "%temp%\CreateShortcut.vbs" echo oLink.WorkingDirectory = "C:\Program Files\MyTkApp" >> "%temp%\CreateShortcut.vbs" echo oLink.Save >> "%temp%\CreateShortcut.vbs" cscript /nologo "%temp%\CreateShortcut.vbs" del "%temp%\CreateShortcut.vbs" echo 安装完成!按任意键退出... pause >nul
三、整理文件结构
把所有文件按以下结构摆放:
安装程序源文件/ ├─ install.bat ├─ python-3.10.10-amd64.exe ├─ deps/ │ ├─ PyMuPDF-xxx.whl │ ├─ numpy-xxx.whl │ └─ pandas-xxx.whl └─ MyTkApp/ ├─ main.py └─ 其他资源文件(如果有)
四、打包成单文件安装程序
用Inno Setup把上述文件打包成一个可执行安装包,步骤如下:
- 安装Inno Setup后打开,选择「新建」向导。
- 填写应用名称、版本、发布者等基本信息。
- 设置安装目录为
{pf}\MyTkApp(即Program Files下的应用文件夹)。 - 添加所有文件:把
install.bat、Python安装包、deps文件夹、MyTkApp文件夹全部添加到安装文件列表。 - 在「设置」步骤中,设置「安装后执行程序」为
{app}\install.bat,并勾选「等待程序结束」。 - 完成向导后编译脚本,生成单文件安装包。
五、注意事项
- 务必保证Python版本和
.whl文件的版本、架构完全匹配,否则会出现安装失败。 - 你的程序中如果涉及文件读写,建议用相对路径替代绝对路径,比如用
os.path.join(os.path.dirname(__file__), "你的文件.txt")来定位文件,避免路径错误。 - 不要在卸载脚本中添加卸载Python的逻辑,避免影响用户电脑上的其他Python程序。
内容的提问来源于stack exchange,提问作者Amir Hamza
相关产品推荐
相关产品推荐

