pyinstaller打包成exe

安装pyinstaller打包python项目成exe包含所需的环境

pyinstaller打包一个python项目,包括打包在anconda下面一个环境。

安装pyinstaller

先进入到需要打包的环境,通过

pip install pyinstaller

测试一下:

输入pyinstaller,显示下面的,表示安装成功。

在这里插入图片描述

开始打包

pyinstaller 选项 python程序文件

如:pyinstaller -F main.py

  • pyinstaller -F main.py 只产生单个exe文件
  • pyinstaller -D main.py 产生一个目录作为一个程序,里面包含exe文件

可以在-F、-D后面加上-w 表示:指定程序运行时不显示命令行窗口(仅对 Windows 有效),不带控制台的打包

当运行exe提示有一些dll文件不存在

我是直接去conda中自己的环境下的lib中的site-packages下找到这个库的文件夹,直接放到和exe文件的同目录下。

如果继续提示有些库没有,我就继续这样加入。

后来嫌弃太多,直接将整个site-packages下的所有文件放到exe文件的同目录下

运行成功!!!

spec打包

上面是最基础的打包,上面执行后会生成main.spec文件,你可以修改spec文件后通过下面的命令打包

pyinstaller main.spec

spec文件的说明

运行pyinstaller main.spec时报错,可以在spec开头加上:

import sys ;
sys.setrecursionlimit(sys.getrecursionlimit() * 5)

# -*- mode: python ; coding: utf-8 -*-
import sys ;
sys.setrecursionlimit(sys.getrecursionlimit() * 5)
block_cipher = None


a = Analysis(
    ['demo.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='demo',
    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,
)
coll = COLLECT(
    exe,
    a.binaries,
    a.zipfiles,
    a.datas,
    strip=False,
    upx=True,
    upx_exclude=[],
    name='demo',
)

参数的含义:

  • pathex:默认有一个spec的目录,当我们的一些模块不在这个路径下,记得把用到的模块的路径添加到这个list变量里。同命令“-p DIR/–paths DIR”.
  • datas:datas是一个元素为元组的列表,每个元组有两个元素,都必须是字符串类型,元组的第一个元素为数据文件或文件夹,元组的第二个元素为运行时这些文件或文件夹的位置。例如:datas=[(’./src/a.txt’, ‘./dst’)],表示打包时将"./src/a.txt"文件添加(copy)到相对于exe目录下的dst目录中。也可以使用通配符:datas= [ (’/mygame/sfx/*.mp3’, ‘sfx’ ) ],表示将/mygame/sfx/目录下的所有.mp3文件都copy到sfx文件夹中。也可以添加整个文件夹:datas= [ (’/mygame/data’, ‘data’ ) ],表示将/mygame/data文件夹下所有的文件都copy到data文件夹下。同命令“–add-data”。

夹中。也可以添加整个文件夹:datas= [ (’/mygame/data’, ‘data’ ) ],表示将/mygame/data文件夹下所有的文件都copy到data文件夹下。同命令“–add-data”。

  • binaries:添加二进制文件,也是一个列表,定义方式与datas参数一样。没具体使用过。同命令“–add-binary”。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值