Windows环境打包python工程为可执行程序的详细过程

 更新时间:2024年01月29日 10:05:47   作者:Jelly-小丑鱼  
我的开发环境是windows7,然后系统是64位,安装的python和wxpython都是32位的,本文记录我怎样用pyinstaller打包我用python开发的工程,在网上搜索了很多资源,基本上都是不全的,所以我在这儿记录一下这个比较完整的过程,一起看看吧

此次博客的目的是记录我怎样用pyinstaller打包我用python开发的工程,在网上搜索了很多资源,基本上都是不全的,所以我在这儿记录一下这个比较完整的过程。

前言:概述一哈,我的开发环境是windows7,然后系统是64位,安装的python和wxpython都是32位的(为什么要安装32位,因为32位的安装包开发的程序到时候既可以在64位操作系统上运行,也能在32位系统上运行,但是如果安装64位的话到时候只能在64位系统上运行)。

1、安装包连接如下,大家也可以去其他地方下载安装包:Python和wxpython安装包,都是32位的

http://xiazai.jb51.net/202401/yuanma/Python_Wxpython_jb51.rar

安装好python和wxpython后就可以在window上开发界面程序了。

1.1首先需要安装pywin32

2、如果此时你的界面程序已经开发完成,我们就开始怎么打包整个工程为可执行程序吧

2.1 首先需要安装pywin32

但是我们电脑可能基本都没有安装pip,所以我们继续安装pip(pip的安装包和pywin32的安装包的连接如下:http://xiazai.jb51.net/202401/yuanma/Pywinpip_jb51.rar) 
下载下来后,将pip的安装包解压到C盘,然后命令行进入到pip目录,如下图所示:

然后执行命令:python setup.py install 
等待pip安装完成,此时pip已经安装完成,但是此时输入pip命令找不到,原因是还需要配置环境变量,在环境变量path下面添加C:\Python27;C:\Python27\Scripts,入下图所示,环境变量之间需要用分号隔开,注意是英文的分号儿不是中文的分号:

点击确定后重新进入cmd控制台就可以使用pip命令了
然后我们就用pip来安装pyinstaller,进入cmd控制台输入如下命令:pip install pyinstaller
等待安装完成后,pyinstaller就安装完成了

你可以在命令行敲命令pyinstaller检测是否安装成功,不成功的话运行起来会提示命令不存在不是内部命令这个也是需要跟你安装的wxpython和python的对应起来,要么都是63位的,要么都是32位,切记必须一致,我这次用的是32位的,所以pywin32也需要32位的。(安装pywin32的作用是为后面安装pyinstaller提供依赖包)

2.3然后此时我们就可以使用pyinstaller命令来打包我们开发好的python工程了

具体步骤如下:
首先介绍哈pyinstaller的参数
-F 表示生成单个可执行文件
-w 表示去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个选项删除吧!
-p 表示你自己自定义需要加载的类路径,一般情况下用不到
-i 表示可执行文件的图标

我这次没有用的第三方的库或者包,所以参数-p我就不需要用了
我这里详细说哈怎么打包工程,工程包括图片啊,数据库文件夹之类的怎么打包,单个的打包我就不说了。
A:首先在cmd命令行进入你程序的目录内,假设你的python入口文件是main.py文件,然后进入执行打包命令:pyinstaller -w -F main.py

打包成功后,在该工程目录下面会多两个文件夹,一个build,一个dist,然后我们的exe文件就在dist目录下面,名字为main.exe

执行完成后如果你工程下面还有好几个目录的话此时exe是运行不成功的,需要修改spec文件,假设你还有文件icon文件夹存放图片和database文件夹存放数据库
B:在工程项目里执行完打包命令后会生成一个文件叫做main.spec,用任何一个文本编辑工具打开这个文件,样本如下

# -*- mode: python -*-
block_cipher = None
a = Analysis(['main.py'],
             pathex=['C:\\Users\\jelly\\Desktop \\DataClean'],
             binaries=[],
             datas=[],
             hiddenimports=[],
             hookspath=[],
             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,
          a.binaries,
          a.zipfiles,
          a.datas,
          [],
          name='main',
          debug=False,
          strip=False,
          upx=True,
          runtime_tmpdir=None,
          console=False )

修改如下,修改的操作就是添加了你的database文件夹和icon文件夹,然后保存

# -*- mode: python -*-
block_cipher = None
a = Analysis(['main.py'],
             pathex=['C:\\Users\\jelly\\Desktop \\DataClean'],
             binaries=[],
             datas=[],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)
dict_treeicon = Tree("C:\\Users\\jelly\\Desktop \\DataClean\\icon",prefix="icon")
a.datas += dict_treeicon
dict_treebase = Tree("C:\\Users\\jelly\\Desktop\\ DataClean\\database",prefix="database")
a.datas += dict_treebase
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          [],
          name='main',
          debug=False,
          strip=False,
          upx=True,
          runtime_tmpdir=None,
          console=False )

然后保存退出再在命令行执行命令:pyinstaller mian.spec
执行此命令后你的exe程序已经重新生成过一次,你回看到此时exe的大小比之前的要大,因为打包了那两个文件夹的内容进去,此时你再去执行exe文件就可以正常运行了

到此这篇关于Windows环境打包python工程为可执行程序的详细过程的文章就介绍到这了,更多相关python打包可执行程序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python实现App自动签到领取积分功能

    Python实现App自动签到领取积分功能

    这篇文章主要介绍了Python实现App自动签到领取积分功能,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-09-09
  • 浅谈Python中的模块

    浅谈Python中的模块

    这篇文章主要介绍了Python中的模块相关知识,文中代码非常详细,供大家参考和学习,感兴趣的朋友可以了解下
    2020-06-06
  • Python OrderedDict的使用案例解析

    Python OrderedDict的使用案例解析

    这篇文章主要介绍了Python OrderedDict的使用案例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Python机器学习NLP自然语言处理基本操作之命名实例提取

    Python机器学习NLP自然语言处理基本操作之命名实例提取

    自然语言处理( Natural Language Processing, NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法
    2021-11-11
  • 使用Python实现MapReduce的示例代码

    使用Python实现MapReduce的示例代码

    MapReduce是一个用于大规模数据处理的分布式计算模型,最初由Google工程师设计并实现的,Google已经将完整的MapReduce论文公开发布了,本文给大家介绍了使用Python实现MapReduce的示例代码,需要的朋友可以参考下
    2024-05-05
  • Python代码实现为PDF添加页码(附详细教程)

    Python代码实现为PDF添加页码(附详细教程)

    在处理合同、报告、论文、技术文档等 PDF 时,给页面添加页码几乎是必备功能,本文将介绍如何使用 Spire.PDF for Python 这个强大的库,通过简单的代码为 PDF 文件自动添加 中文页码 ,希望对大家有所帮助
    2026-05-05
  • 利用python批量检查网站的可用性

    利用python批量检查网站的可用性

    当大家的站点越来越来越多的时候会发现管理起来也挺复杂的,所以这篇文章给大家分享下利用python批量检查网站的可用性的功能,对大家管理网站具有很实用的价值,有需要的朋友可以参考借鉴。
    2016-09-09
  • 如何使用Python处理HDF格式数据及可视化问题

    如何使用Python处理HDF格式数据及可视化问题

    这篇文章主要介绍了如何使用Python处理HDF格式数据及可视化问题,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • Python NumPy灰度图像的压缩原理讲解

    Python NumPy灰度图像的压缩原理讲解

    在本篇文章里小编给大家整理的是一篇关于Python NumPy灰度图像的压缩原理讲解内容,有兴趣的朋友们可以学习参考下。
    2021-08-08
  • python判断计算机是否有网络连接的实例

    python判断计算机是否有网络连接的实例

    今天小编就为大家分享一篇python判断计算机是否有网络连接的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12

最新评论