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查找两个有序列表中位数的方法【基于归并算法】

    Python查找两个有序列表中位数的方法【基于归并算法】

    这篇文章主要介绍了Python查找两个有序列表中位数的方法,结合实例形式分析了Python基于归并算法遍历、计算有序列表相关操作技巧,需要的朋友可以参考下
    2018-04-04
  • 使用Pycharm分段执行代码

    使用Pycharm分段执行代码

    这篇文章主要介绍了使用Pycharm分段执行代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python中函数的参数类型详解

    Python中函数的参数类型详解

    这篇文章主要介绍了Python中函数的参数类型详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-07-07
  • Python中dict排序的两种方法

    Python中dict排序的两种方法

    字典本身是无序的,所以它每次输出都是不一样的,顺序都是乱的,那么字典如何排序,本文主要介绍了Python中dict排序的两种方法,感兴趣的可以了解一下
    2024-01-01
  • Python实现输出程序执行进度百分比的方法

    Python实现输出程序执行进度百分比的方法

    这篇文章主要介绍了Python实现输出程序执行进度百分比的方法,涉及Python数值运算与系统输出相关操作技巧,需要的朋友可以参考下
    2017-09-09
  • python实现简单文件读写函数

    python实现简单文件读写函数

    这篇文章主要为大家详细介绍了python实现简单文件读写函数,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-02-02
  • python将依赖和源码打包在一起的方法

    python将依赖和源码打包在一起的方法

    Python 项目在不同环境中部署时,经常会遇到安装依赖的问题,为了避免多个环境引起的重复劳动,可以将依赖和源码打包在一起交付,本文就给大家详解介绍了将依赖和源码打包在一起的方法,需要的朋友可以参考下
    2023-06-06
  • Django Rest framework认证组件详细用法

    Django Rest framework认证组件详细用法

    这篇文章主要介绍了Django Rest framework认证组件详细用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • 详解PyQt5中textBrowser显示print语句输出的简单方法

    详解PyQt5中textBrowser显示print语句输出的简单方法

    这篇文章主要介绍了详解PyQt5中textBrowser显示print语句输出的简单方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Python命令行参数解析模块optparse使用实例

    Python命令行参数解析模块optparse使用实例

    这篇文章主要介绍了Python命令行参数解析模块optparse使用实例,本文讲解了增加选项(add_option())、行为(action)、设置默认值(default)、生成帮助提示(help)、设置boolean值、错误处理、选项组(Grouping Options)等内容,需要的朋友可以参考下
    2015-04-04

最新评论