使用PyInstaller轻�分�Python应用程�

PyInstaller用于什么?

PyInstaller读�您编写的Python脚本。它会分�您的代�,以�现脚本执行所需的�个其它模�和库。然�,它会收集这些文件的副本,包括活动的Python解释器�

为什么使用PyInstaller�打包Python代�?

PyInstaller用于将Python代�打包��独立�行的应用程�,适用于���作系统。它将Python脚本转��一个包�所有必��赖项的�个�执行文件,�以在未安装Python的计算机上�行。这样�以更方便地分�和部署Python应用程�,因为用户�需�在其系统上安装Python和所需的模�就�以�行应用程�。此外,PyInstaller还�以用于创建�文件�执行文件,这些文件包�应用程�所需的所有�赖项。这样�以更轻�地分�应用程�,因为用户�需下载一个文件。

如何安装PyInstaller

PyInstaller作为一个普通的Python包是�用的。�布版本的�代�存档�以从PyPi获�,但更容易使用pip安装最新版本:

C:\> pip install pyinstaller

��级现有的PyInstaller安装到最新版本,使用:

C:\> pip install --upgrade pyinstaller
�安装当�的开�版本,使用:
C:\> pip install https://github.com/pyinstaller/pyinstaller/tarball/

如何使用PyInstaller创建一个EXE

我们将以一个�一的Python文件作为示例,详细说明打包步骤。以Python 3.11.0为例,在安装aspose.cells�。

  1. 创建一个�为example.py的Python示例文件。
    import os
    from jpype import *
    
    __cells_jar_dir__ = os.path.dirname(__file__)
    addClassPath(os.path.join(__cells_jar_dir__, "aspose-cells-23.1.jar"))
    addClassPath(os.path.join(__cells_jar_dir__, "bcprov-jdk15on-160.jar"))
    addClassPath(os.path.join(__cells_jar_dir__, "bcpkix-jdk15on-1.60.jar"))
    addClassPath(os.path.join(__cells_jar_dir__, "JavaClassBridge.jar"))
    
    import jpype
    import asposecells
    jpype.startJVM()
    from asposecells.api import Workbook, FileFormatType, CellsHelper
    
    print(CellsHelper.getVersion())
    workbook = Workbook(FileFormatType.XLSX)
    workbook.getWorksheets().get(0).getCells().get("A1").putValue("Hello World")
    workbook.save("output.xlsx")
    
    jpype.shutdownJVM()
  2. 创建一个�为c:\app的文件夹,并将example.py(附加)�制到c:\app。
  3. 打开命令�示符并�行pyinstaller example.py命令。
    C:\app> pyinstaller example.py
  4. �制jars(aspose-cells-xxx.jar, bcprov-jdk15on-160.jar, bcpkix-jdk15on-1.60.jar, JavaClassBridge.jar. 他们在C:\Python311\Lib\site-packages\asposecells\lib文件夹中)到c:\app。
  5. 编辑具有spec�缀的文件,在datas部分添加�example.spec这样。 todo:image_alt_text
  6. 在命令�示符窗�中�行pyinstaller example.spec。
    C:\app> pyinstaller example.spec
  7. 切�到C:\app\dist\example目录,您会找到example.exe文件。
Morty Proxy This is a proxified and sanitized view of the page, visit original site.