1、编译.pyc文件
1 2 3 4 5 6 7 8 9 | python -m py_compile info.py(py文件路径) python -m py_compile py文件绝对路径 pyc会生成在目录下的__pycache__下(前后有双下划线) 生成的文件名命名方式:源文件名.cpython-python版本.pyc 运行: python info.cpython-38.pyc |
2、打包为exe
安装:
1 | pip3.8 install -U pyinstaller |
pyinstaller将单个py文件打包:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | Pyinstaller -F info.py -- 打包exe Pyinstaller -F -w info.py -- 不带控制台的打包 不带黑框 Pyinstaller -F -i test .ico info.py -- 打包指定exe图标打包 常用选项: -h,–help 查看该模块的帮助信息 -F,-onefile 产生单个的可执行文件 -D,–onedir 产生一个目录(包含多个文件)作为可执行程序 -a,–ascii 不包含 Unicode 字符集支持 -d,–debug 产生 debug 版本的可执行文件 -w,–windowed,–noconsolc 指定程序运行时不显示命令行窗口(仅对 Windows 有效) -c,–nowindowed,–console 指定使用命令行窗口运行程序(仅对 Windows 有效) -o DIR,–out=DIR 指定 spec 文件的生成目录。如果没有指定,则默认使用当前目录来生成 spec 文件 -p DIR,–path=DIR 设置 Python 导入模块的路径(和设置 PYTHONPATH 环境变量的作用相似)。也可使用路径分隔符(Windows 使用分号,Linux 使用:号)来分隔多个路径 -n NAME,–name=NAME 指定项目(产生的 spec)名字。如果省略该选项,那么第一个脚本的主文件名将作为 spec 的名字 -i 选择图标 |
pyinstaller将多个py文件打包:
生成spec规范配置文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | pyi - makespec demo.py 或 pyinstaller [ - F / - D] [ - w / - c] [ - i xxx.ico] demo.py # -*- mode: python ; coding: utf-8 -*- block_cipher = None #设置 加密,需要安装tinyaes第三方库,最多16位字符,此处在使用--key= 会有变化 a = Analysis( [ 'demo.py' ], # 运行的所有py文件,包括依赖的py文件 pathex = [], # 搜索导入的路径列表(此列表为项目绝对路径),包括选项给出的路径--paths,项目需要从什么地方导入自定义库 binaries = [], # 脚本需要的非python模块,包括--add-binary选项给出的名称,二进制数据 datas = [], # 应用程序中包含的非二进制文件,包括--add-data选项给出的名称,项目需要用到什么数据,比如图片,视频等。里面格式为tuple,第一个参数是文件路径,第二个是打包后所在的路径,其为一个元组:('image/*.png','data/image') hiddenimports = [], # 假如打包后打开exe显示module not found,就要把该库添加到hiddenimports里面了 hookspath = [], hooksconfig = {}, # 挂钩配置选项由一个字典组成 runtime_hooks = [], excludes = [], # 假如你用的python有很多库,但是你不需要用到某个,那么就把它添加到里面去,可以压缩文件大小 win_no_prefer_redirects = False , win_private_assemblies = False , cipher = block_cipher, noarchive = False , ) pyz = PYZ(a.pure, a.zipped_data, cipher = block_cipher) exe = EXE( pyz, a.scripts, # 打包的脚本文件 # a.binaries, # 如果是单文件模式,则需要添加;多文件也可以添加 # a.zipfiles, # a.datas, [], exclude_binaries = True , # 是否排除二进制文件,为True时,为排除二进制的文件,当文件交大时包含二进制文件运行较快,如果是单文件,则没有这个选项 name = 'demo' , # 打包程序的名字 debug = False , # 是否启用调试功能 bootloader_ignore_signals = False , # runtime_tmpdir=None, # 生成单文件时需要这个参数,定义运行时的临时文件夹 strip = False , upx = True , # 打包的时候进行压缩,False表示不压缩;要用到一个压缩程序UPX,用于压缩文件,需要单独下载 console = True , # 打包后的可执行文件双击运行时屏幕会出现一个cmd窗口,不影响原程序运行,等于是是否加-w参数 disable_windowed_traceback = False , argv_emulation = False , target_arch = None , codesign_identity = None , entitlements_file = None , """添加选项,初始化时没有的""" icon = "", # 指定应用程序的图标,传入路径,可以相对路径 ) coll = COLLECT( """ 如果是单文件模式,不需要这个COLLECT类,同时需要将: a.binaries, a.zipfiles, a.datas, 这些数据文件添加到EXE中 """ exe, a.binaries, a.zipfiles, a.datas, strip = False , upx = True , upx_exclude = [], name = 'main' , ) |
项目打包:
1 | pyinstaller demo.spec |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2021-01-06 隐藏 Selenium
2020-01-06 filezilla 认证失败 Received unexpected end-of-file from SFTP server