当前位置:   article > 正文

pyinstaller打包成exe_pyinstaller -d-w

pyinstaller -d-w

安装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',
)
  • 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

参数的含义:

  • 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”。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/537366
推荐阅读
相关标签
  

闽ICP备14008679号