头图

大家好,我是涛哥,本文内容来自 涛哥聊Python ,转载请标原创。

今天为大家分享一个强大的 Python 库 - pynsist。

Github地址:https://github.com/takluyver/pynsist


Pynsist是一个用于打包Python应用为Windows安装程序的工具。它不仅包含Python脚本,还可以包括Python解释器本身,从而创建一个无需预先安装Python即可运行的安装包。

安装

安装Pynsist相对简单,可以通过Python的包管理器pip进行安装:

pip install pynsist

这条命令将安装Pynsist及其所有依赖。

特性

  • 无需Python环境:生成的安装程序包含Python解释器,用户无需在Windows上预先安装Python。
  • 简单的配置文件:使用INI格式的配置文件定义安装需求。
  • 灵活的包含选项:支持包含额外的Python包和非Python文件。

基本功能

创建安装程序

Pynsist的核心功能是将Python应用打包成Windows安装程序。这通过编写一个配置文件完成,该文件指定了包含的Python模块、脚本、数据文件等。

[Application]
name=MyApp
version=1.0
entry_point=myapp:main

[Python]
version=3.8.0

[Include]
packages =
    requests
    lxml
files =
    data/config.json
    docs/readme.txt

生成安装器

配置文件准备好后,使用Pynsist的命令行工具来生成安装程序:

pynsist myinstaller.cfg

这将根据配置文件中的指示打包应用,并生成一个可以在Windows上执行的安装程序。

高级功能

Pynsist为用户提供了多种高级选项和功能,这些功能使得生成的安装程序可以更加符合特定的需求和条件。

自定义NSIS脚本

Pynsist允许用户提供自定义的NSIS(Nullsoft Scriptable Install System)脚本,以控制安装过程中的细节。通过这种方式,用户可以实现更多定制化的安装需求。

[Build]
installer_script=custom_installer.nsi

在这个配置中,可以指定一个自定义的NSIS脚本文件名。下面是一个NSIS脚本的基本示例:

!include "MUI2.nsh"

!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH

!insertmacro MUI_LANGUAGE "English"

Section "Install MyApp"
    SetOutPath "$INSTDIR"
    File "MyApp.exe"
    CreateShortcut "$DESKTOP\MyApp.lnk" "$INSTDIR\MyApp.exe"
SectionEnd

这个脚本定义了一个基本的安装流程,包括创建程序的快捷方式。

包含额外的Python包和模块

对于复杂的应用,可能需要包含额外的Python包。Pynsist支持从PyPI自动下载并包含所需的第三方库。

[Include]
pypi_wheels =
    requests==2.25.1
    beautifulsoup4==4.9.3
files =
    docs/readme.txt

这个配置将自动下载requestsbeautifulsoup4这两个库的wheel文件,并将它们包含在安装包中。

包含非Python文件

对于需要包括图像、文档或其他非代码资源的应用,Pynsist使得包括这些文件变得简单。

[Include]
files =
    data/config.ini
    images/logo.png

此配置示例将config.ini配置文件和logo.png图像包含在最终的安装程序中。

多版本Python支持

Pynsist允许指定要包含在安装程序中的Python解释器的版本,确保应用与Python版本的兼容性。

[Python]
version=3.9.1
bitness=64

此配置指定了生成安装程序时应包括的Python解释器的版本和位数。

高级配置选项

Pynsist提供了一系列高级配置选项,允许开发者调整安装过程中的各种设置,如压缩级别、安装路径等。

[Application]
name=MyApp
version=1.0
publisher=MyCompany
icon=myapp.ico

此配置为安装程序添加了应用名称、版本号、发布者信息和图标。

实际应用场景

Pynsist为Python开发者提供了一种高效的方法来打包和分发Windows应用程序。

商业软件分发

对于商业软件开发者,使用Pynsist可以将Python应用打包为一个完整的安装程序,便于客户下载和安装,提供专业的用户体验。

[Application]
name=FinanceApp
version=1.0
entry_point=financeapp:main
icon=app_icon.ico

[Python]
version=3.9.1

[Include]
packages =
    pandas
    numpy
pypi_wheels =
    matplotlib==3.3.3
files =
    data/config.json

这个配置将创建一个包含必要Python包和自定义配置文件的金融应用程序安装包。

教育工具

在教育领域,教师可以使用Pynsist将开发的教学工具打包,使学生可以在家中的Windows电脑上轻松安装和使用。

[Application]
name=EduTool
version=2.1
entry_point=edutool:run
icon=edu_icon.ico

[Python]
version=3.8.0

[Include]
pypi_wheels =
    numpy==1.19.4
    scipy==1.5.4
files =
    docs/readme.txt
    resources/tutorial.pdf

此示例打包了一个教育工具,包含教程文档和必要的科学计算库。

数据分析应用

数据分析师可以利用Pynsist将复杂的数据分析工具打包,方便在没有Python环境的机器上运行,进行数据处理和分析。

[Application]
name=DataAnalyzer
version=1.0
entry_point=analyzer:start_gui
icon=analyzer.ico

[Python]
version=3.8.6

[Include]
pypi_wheels =
    pandas==1.1.5
    seaborn==0.11.0
files =
    config/settings.ini
    scripts/preprocessing.py

这个配置为数据分析工具提供了一个图形用户界面的启动点,并包括了数据可视化库。

实验室和研究

研究人员可以使用Pynsist将实验室开发的模拟软件或分析工具打包,便于同行或合作伙伴在其他实验室复制研究结果。

[Application]
name=LabSimulator
version=3.5
entry_point=simulator:main
icon=lab_icon.ico

[Python]
version=3.7.9

[Include]
pypi_wheels =
    scipy==1.5.2
files =
    experiments/data1.csv
    experiments/data2.csv
    LICENSE

这个示例展示了如何将科学模拟软件及其相关数据和许可证文件打包。

总结

Python的Pynsist库是一款强大的工具,用于将Python应用打包为Windows安装程序。它允许开发者将Python解释器和所有依赖一起打包,生成的安装程序允许用户在没有预安装Python环境的情况下运行应用。Pynsist通过简单易懂的INI配置文件,支持高度自定义的打包过程,包括添加额外的Python包、文件和自定义的NSIS脚本。这使得Pynsist特别适合于需要便捷分发Python应用到Windows用户的场景,如商业软件发布、教育工具分发、数据分析工具部署等。通过Pynsist,Python开发者可以轻松地将复杂的应用转换为用户友好的安装包,提升软件的可接受度和便利性。


涛哥聊Python
59 声望39 粉丝