文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python3.9使用最新版pyinstaller将项目或程序打包成exe或者mac中的可执行文件

2023-08-31 07:59

关注

1、pyinstaller的说明:

pyinstaller 能够在 Windows、Linux、Mac 等操作系统下将 Python 源文件打包,通过对源文件打包, Python 程序可以在没有安装 Python 的环境中运行,也可以作为一个独立文件方便传递和管理。

PyInstaller 支持 Python 2.7 和 Python 3.3+。可以在 Windows、Mac 和 Linux 上使用,但是并不是跨平台的,而是说要是希望打包成 .exe 文件,需要在Windows 系统上运行 PyInstaller 进行打包工作;打包成 Mac App,需要在 Mac OS 上使用,Linux 也一样,不能在一端上打另外两端的包,还有 Mac m1 的打包不能给 Mac intel 的使用,相反也一样,运行会报错:Error:Bad CPU type in executable。

pyinstaller 不需要自己写 setup.py 文件,只需要在工作目录中输入打包命令即可。最后会生成 build 和 dist 文件夹,启动文件在 dist 文件夹下。

2、pyinstaller的安装

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller

3、打包命令

pyinstaller [项目启动文件]

其他参数(按需求选择):

3.1、将项目和代码打包多个文件的命令

windows下:

项目结构:

命令:

pyinstaller -D main.py -i ./sources/人工智能.ico -w

 新增的文件:

 目标exe的可执行文件就在dist文件夹下:

 对上述生成的main.spec里的内容进行查看:

# -*- mode: python ; coding: utf-8 -*-block_cipher = Nonea = Analysis(    ['main.py'],    pathex=[],    binaries=[],    datas=[],    hiddenimports=[],    hookspath=[],    hooksconfig={},    runtime_hooks=[],    excludes=[],    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,    [],    exclude_binaries=True,    name='main',    debug=False,    bootloader_ignore_signals=False,    strip=False,    upx=True,    console=False,    disable_windowed_traceback=False,    argv_emulation=False,    target_arch=None,    codesign_identity=None,    entitlements_file=None,    icon=['sources\\人工智能.ico'],)coll = COLLECT(    exe,    a.binaries,    a.zipfiles,    a.datas,    strip=False,    upx=True,    upx_exclude=[],    name='main',)

下面是针对main.spec的说明:

# -*- mode: python ; coding: utf-8 -*-block_cipher = Nonea = Analysis(    ['main.py'],     pathex=[], # 此列表为项目绝对路径    binaries=[],    datas=[],  # 此处可以添加静态资源,格式为('SOURCE_DIR/TO/YOUR_FILES_PATH','TARGET_DIR_PATH/')    hiddenimports=[],    hookspath=[],    hooksconfig={},    runtime_hooks=[],    excludes=[],    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,    [],    exclude_binaries=True,    name='main', # 程序exe的名称    debug=False,    bootloader_ignore_signals=False,    strip=False,    upx=True, # 打包的时候进行压缩,False表示不压缩    console=False, #此处console=True表示,打包后的可执行文件双击运行时屏幕会出现一个cmd窗口,不影响原程序运行,如不需要执行窗口,改成False即可    disable_windowed_traceback=False,    argv_emulation=False,    target_arch=None,    codesign_identity=None,    entitlements_file=None,    icon=['sources\\人工智能.ico'], #程序图标,要绝对路径,也可以不是相对路径)coll = COLLECT(    exe,    a.binaries,    a.zipfiles,    a.datas,    strip=False,    upx=True,    upx_exclude=[],    name='main', #程序文件夹名称)

更改main.spec文件:

注意:要将源码复制到dist目录里,不然程序无法运行!!!

# -*- mode: python ; coding: utf-8 -*-block_cipher = Nonea = Analysis(    ['main.py'],    pathex=[], # 此列表为项目绝对路径    binaries=[],    datas=[('./src/','./src'),# 将源码输入进dist文件夹中,以保证程序正常运行    ('./sources/','./sources/'), # 静态资源    ('./source_dir/美女.png','./target_dir/')],# 此处可以添加静态资源,格式为('SOURCE_DIR/TO/YOUR_FILES_PATH','TARGET_DIR_PATH/')    hiddenimports=[],    hookspath=[],    hooksconfig={},    runtime_hooks=[],    excludes=[],    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,    [],    exclude_binaries=True,    name='Speech演讲专用软件', # 程序exe的名称    debug=False,    bootloader_ignore_signals=False,    strip=False,    upx=True, # 打包的时候进行压缩,False表示不压缩    console=False, #此处console=True表示,打包后的可执行文件双击运行时屏幕会出现一个cmd窗口,不影响原程序运行,如不需要执行窗口,改成False即可    disable_windowed_traceback=False,    argv_emulation=False,    target_arch=None,    codesign_identity=None,    entitlements_file=None,    icon=['sources\\人工智能.ico'], #程序图标,要绝对路径,也可以不是相对路径)coll = COLLECT(    exe,    a.binaries,    a.zipfiles,    a.datas,    strip=False,    upx=True,    upx_exclude=[],    name='WebBrowserSpeech', #程序文件夹名称)

然后重新执行下面的命令:

pyinstaller main.spec

 结果变成下面的:

 

运行结果:

 

大功告成!!!

Mac下:

项目结构:

pyinstaller -D main.py -w -i ./sources/人工智能.icns

新增的文件:

 目标mac上的可执行文件就在dist文件夹下:

 更改main.spec文件:

# -*- mode: python ; coding: utf-8 -*-block_cipher = Nonea = Analysis(    ['main.py'],    pathex=[],    binaries=[],    datas=[('./source_dir/美女.png','./target_dir/')],    hiddenimports=[],    hookspath=[],    hooksconfig={},    runtime_hooks=[],    excludes=[],    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,    [],    exclude_binaries=True,    name='Speech演讲专用软件',    debug=False,    bootloader_ignore_signals=False,    strip=False,    upx=True,    console=False,    disable_windowed_traceback=False,    argv_emulation=False,    target_arch=None,    codesign_identity=None,    entitlements_file=None,    icon=['sources/人工智能.icns'],)coll = COLLECT(    exe,    a.binaries,    a.zipfiles,    a.datas,    strip=False,    upx=True,    upx_exclude=[],    name='WebBrowserSpeech',)app = BUNDLE(    coll,    name='WebBrowserSpeech.app',    icon='./sources/人工智能.icns',    bundle_identifier=None,)

然后执行下面的命令:

pyinstaller main.spec

 

来源地址:https://blog.csdn.net/wtl1992/article/details/131194417

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯