python程序打包多个py文件_【Python】Python打包生成可执行程序

一、前言

    有时候使用Python写的工具需要给其他人使用,但不同的电脑上面环境各不相同,安装Python还需要装对应的库,比较麻烦,打包成可执行文件是一个很好的解决方案。刚开始打包执行文件时采用的是py2exe,后来由于打包时包含库的问题处理麻烦换了pyinstaller,总体来说后者还是稍微好用一点。

二、使用py2exe打包生成可执行程序

    1. py2exe模块安装

# 现在python2的安装可能麻烦点,需要找安装包# https://sourceforge.net/projects/py2exe/files/py2exe/pip install py2exe

    2. 创建打包脚本

# 文件名 setup.pyfrom distutils.core import setupimport py2exe# 填写需要打包的代码的主入口文件setup(console=["yourmain.py"])

    3. 通过命令行执行打包命令

python setup.py py2exe

    以上只是最简单的示例,通过py2exe打包可以选择包含的文件,设置可执行文件的图标,对于GUI程序可以选择使用windows模式,而不是控制台运行。下面是完整的打包脚本与详细的说明。

# 文件名 setup.pyfrom distutils.core import setupimport py2exeoptions = {  "py2exe":{     #library.zip 文件是否压测 1压测 0不压缩, 不压缩zip会大一点    "compressed":0,    # 打包优化等级 0不优化(pyc) 1(pyo), 2(pyo)额外优化    "optimize":0,    # 文件打包到exe中, 1打包,包含Py解释器 2打包,不包括Py解释器, 3不打包    # 1,2 在64位系统上不支持    "bundle_files":3,    # 打包排除的dll文件    "dll_excludes":[], #例如打PyQt的程序就需要排除MSVCPXX.dll    # 包含的文件    "includes":[]  }}setup(  options=options, # 设置  description="软件描述",  zipfile=None, #设置None将library.zip打入exe中,不填则不打入  #下面的参数console,windows,service不可同时使用  console=[    {"script": "yourmain.py", #脚本      "icon_resources": [(1, u"icon.ico")] } #设置图标      ], # 控制台  windows=["yourmain.py"], # 窗口程序   service=["yourservice"] #这个可以生成服务,但我没有用过。  )

三、使用pyinstaller打包生成可执行程序

    1. 安装Pythoninstaller

pip install pyinstaller

    2. 执行打包

pyinstaller -F yourmain.py

    使用pyinstaller打包会比较简单,安装好后执行命令即可完成可执行程序打包。当然pyinstaller也提供了许多的参数来进行打包设置,下面列出了一些常用的指令。

参数 简写 描述
--help -h 查看该模块的帮助信息
-onefile -F 将全部代码打包仅生成一个可执行文件
--onedir -D 将生成一个目录,包含多文件作为可执行程序
--windowed -w 打包的程序运行时不会显示命令行窗口
--console -c 打包程序以命令行窗口运行
--out=DIR -o DIR 指定spec文件的生成目录,默认生成在当前目录
--path=DIR -p DIR 设置导入模块的路径
--name=NAME -n NAME 设置可执行程序的名字

--icon=icon

-i icon 设置可执行程序的图标

    这里需要特别注意使用pyinstaller -F yourmain.py 打包生成的独立exe运行的时候会在C盘Local/Temp生成一个临时目录,而且每次运行都会生成一个。251c012cdac3bcd21c447f0f03e16355.png这就是占用磁盘的隐藏祸首。

四、将代码生成pyd

    有时候需要对部分代码进行隐藏或加快运行速度,就可以将py代码打成pyd文件进行使用。

    1. 首先需要安装Cython库。

pip install Cython

    2. 编写编译脚本

from distutils.core import setupfrom Cython.Build import cythonizesetup(  name = '脚本名',  ext_modules = cythonize("脚本.py"),)

    3. 执行编译

python setup.py build_ext --inplace

    pyd的使用方式和py文件一致,只是无法看到里面的内容而已。在执行编译的时候如果出现“Unable to find vcvarsall.bat”错误时,就需要下载安装vcvarsall.bat。

五、后记

    本篇主要是将Python代码打包的方式进行了简单的汇总记录,方便自己后续使用,也希望大家看后有所帮助。

你可能感兴趣的:(vue4,库模式打包)