首先要注意一下:打包python文件成exe格式这个过程只能在windows环境下运行

  1. 直接在命令行用pip安装 pyinstaller
pip install pyinstaller
  1. 下载安装pyinstaler运行时所需要的windows拓展—pywin32

pywin32:http://sourceforge.net/projects/pywin32/files/pywin32/
点击最新的Build再点击pywin32-219.win-amd64-py2.7.exe(这里要根据你的windows x86或者x64和你的python版本来选择)

3.在命令行中切换到要打包的程序所在目录,直接输入下面的指令即可

pyinstaller -F demo.py

参数 含义
-F 指定打包后只生成一个exe格式的文件
-D –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)
-c –console, –nowindowed 使用控制台,无界面(默认)
-w –windowed, –noconsole 使用窗口,无控制台
-p 添加搜索路径,让其找到对应的库。
-i 改变生成程序的icon图标

注意事项:

生成文件中,可能包含一个以warn开头的类似warndemo.txt的警告文件 这很明显,是因为程序无法自动导入很多的库
使用-p参数添加搜索路径 pyinstaller.py -F -p C:\python27; ..\demo.py
注意当前目录是我在下一级目录里
2.添加icon图标

pyinstaller.py -F -p C:\python27; -i ..\a.ico ..\demo.py

对了,这里有个网址可以参考一下

后话:

我按照自己写的步骤在自己电脑上试了一下是可以的,但是将exe拷贝到别人电脑上用了一下,发现出了一个这样的错误

F:\qq文件\a>AutoRecord.exe
Traceback (most recent call last):
File “”, line 21, in
File “C:\Python27\Lib\site-packages\PyInstaller\loader\pyi_importers.py”, line
507, in install
File “C:\Python27\Lib\site-packages\PyInstaller\loader\pyi_importers.py”, line
156, in init
ImportError: Can’t load frozen modules.
这个问题是因为他的运行目录里面包含了中文,要处理中文要从github上面安装最新的pyinstaller

git clone https://github.com/dkw72n/pyinstaller.git
python setup.py install
然后重新打包.py文件再次发给对方就可以解决这个问题了

解决一些问题可以查看这个网址使用PyInstaller打包Python程序

后续文章:

简介

PyInstaller可以用来打包python应用程序,打包完的程序就可以在没有安装Python解释器的机器上运行了。PyInstaller支持Python 2.7和Python 3.3+。可以在Windows、Mac OS X和Linux上使用,但是并不是跨平台的,而是说你要是希望打包成.exe文件,需要在Windows系统上运行PyInstaller进行打包工作;打包成mac app,需要在Mac OS上使用。

安装

linux or mac

你可以从PyPi上下载安装,当然也可以使用pip或者easy_install来安装。

1
2
3
pip install pyinstaller
or
easy_install pyinstaller
版本更新

1
2
3
pip install –upgrade pyinstaller
or
easy_install –upgrade pyinstaller
windows

Windows上运行PyInstaller还需要PyWin32或者pypiwin32,其中pypiwin32在你安装PyInstaller的时候会自动安装。

使用PyInstaller

PyInstaller分析你的python程序,找到所有的依赖项。然后将依赖文件和python解释器放到一个文件夹下或者一个可执行文件中。

打包成一个文件夹

当使用PyInstaller打包的时候,默认生成一个文件夹,文件夹中包含所有依赖项,以及可执行文件。打包成文件夹的好处就是debug的时候可以清楚的看到依赖项有没有包含。另一个好处是更新的时候,只需要更新可执行文件就可以了。当然缺点也很明显,不方便,不易管理。

1
pyinstaller script.py
那么它是如何工作的呢?PyInstaller的引导程序是一个二进制可执行程序。当用户启动你的程序的时候,PyInstaller的引导程序开始运行,首先创建一个临时的Python环境,然后通过Python解释器导入程序的依赖,当然他们都在同一个文件夹下。

打包成一个文件

我们可以用onefile参数将所有文件打包到一个可执行文件中。

1
pyinstaller –onefile script.py
打包成一个文件相对于文件夹更容易管理。坏处运行相对比较慢。这个文件中包含了压缩的依赖文件拷贝(.so文件)。

当程序运行时,PyInstaller的引导程序会新建一个临时文件夹。然后解压程序的第三方依赖文件到临时文件夹中。这也是为什么一个可执行文件比文件夹中执行的时间要长的原因。剩下的就和上面的一样了。

spec 文件

当你执行下面命令

1
pyinstaller options..script.py
PyInstaller首先建一个sepc(specification)文件:script.spec。这个文件的存放地址可以使用参数–specpath= 来定义,默认放在当前文件夹下。

spec文件的作用是什么呢?它会告诉PyInstaller如何处理你的py文件,它会将你的py文件名字和输入的大部分参数进行编码。PyInstaller通过执行spec文件中的内容来生成app,有点像makefile。正常使用中我们是不需要管spec文件的,但是下面几种情况需要修改spec文件:

需要打包资源文件
需要include一些PyInstaller不知道的run-time库
为可执行文件添加run-time 选项
多程序打包
可以通过下面命令生成spec文件

1
pyi-makespec options script.py [other scripts …]
修改完spec文件,就可以通过下面命令来生成app文件了

1
pyinstaller options script.spec
当通过spec文件来生成app文件的时候只有下面几个参数是有用的:

–upx-dir=
–distpath=
–noconfirm=
–ascii
spec 文件解析

下面是一个spec文件的例子。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
block_cipher = None
a = Analysis([‘minimal.py’],
pathex=[‘/Developer/PItests/minimal’],
binaries=None,
datas=None,
hiddenimports=[],
hookspath=None,
runtime_hooks=None,
excludes=None,
ciper=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz, …)
coll = COLLECT(…)
spec文件中主要包含4个class: Analysis, PYZ, EXE和COLLECT.

Analysis以py文件为输入,它会分析py文件的依赖模块,并生成相应的信息
PYZ是一个.pyz的压缩包,包含程序运行需要的所有依赖
EXE根据上面两项生成
COLLECT生成其他部分的输出文件夹,COLLECT也可以没有
修改spec文件

我们上面说过有时候PyInstaller自动生成的spec文件并不能满足我们的需求,最常见的情况就是我们的程序依赖我们本地的一些数据文件,这个时候就需要我们自己去编辑spec文件来添加数据文件了。
上面的spec文件解析中Analysis中的datas就是要添加到项目中的数据文件,我们可以编辑datas.

1
2
3
4
5
6
a = Analysis(

datas = [(‘you/source/file/path’,’file_name_in_project’),
(‘source/file2’, ‘file_name2’)]

)
可以认为datas是一个List,每个元素是一个二元组。元组的第一个元素是你本地文件索引,第二个元素是拷贝到项目中之后的文件名字。除了上面那种写法,也可以将其提出来。

1
2
3
4
5
6
7
added_files = […]

a = Analysis(

datas = added_files,

)
其他的二进制文件添加方法类似。

总结

最后简单来说,我们要通过PyInstaller生成可执行的文件主要下面两步。

1
pyinstaller [option] mypython.py
option为空生成文件夹,选择onefile,生成一个文件。
如果项目有一些依赖的数据文件,上面生成的二进制文件是无法运行的,这个时候可以通过修改spec文件,让后再用pyinstaller运行spec文件。

1
pyinstaller [option] mypython.spec
当然也按上文那样先生成spec文件。

pyinstaller(py文件转成exe)相关推荐

  1. 【Python学习笔记(二)】使用Pyinstaller将不同路径下的py文件打包成exe可执行文件

    ** 使用Pyinstaller将不同路径下的py文件打包成exe可执行文件 ** ** 前言 在Windows环境下需要打包一个python项目成exe可执行文件,共有一个主函数BomSoftwar ...

  2. 用pyinstaller打包多个py文件转成exe格式

    用pyinstaller打包多个py文件转成exe格式 用pyinstaller打包多个py文件转成exe格式 响应国家号召2019-Ncov 在家闲来无聊,学写一个飞船攻打外星人的python程序, ...

  3. bat脚本中获取上级目录_使用Python写一个可以监控Tomcat 运行的脚本,并且把.py文件转换成.exe文件...

    使用Python写一个可以监控Tomcat 运行的脚本,并且把.py文件转换成.exe文件 文章来源与博主本人的CSDN博客,博客地址:https://blog.csdn.net/weixin_435 ...

  4. 将py文件打包成exe可执行文件

    使用pyinstaller库即可将py文件打包成exe文件 安装pyinstaller库 pip install pyinstaller 将py文件打包成exe文件 1.首先进入cmd,用cd命令定位 ...

  5. Python: 如何将py文件转成exe文件?

    Python: 如何将py文件转成exe文件? 1.安装PyInstaller模块 pip install PyInstaller 2.将py文件打包成exe执行文件 找到需要打包的py文件所在路径, ...

  6. 小白学习PYTHON之路---PY文件转换成EXE可执行文件

    一.背景 今天闲着无事,写了一个小小的Python脚本程序,然后给同学炫耀的时候,发现每次都得拉着其他人过来看着自己的电脑屏幕,感觉不是很爽,然后我想着网上肯定有关于Python脚本转换成可执行文件的 ...

  7. python应用---将py文件打包成exe应用程序

    写好了python程序,想将它像一个app一样双击就可以运行,或者想发给一个没有python编辑器的朋友,该如何操作? python开发人员就考虑了这种情况,提供了一系列的库以供使用者解决这些问题. ...

  8. python:将.py文件转换成.exe文件

    一.使用pip安装PyInstaller ①python3.x需要使用PyInstaller才能进行转exe文件. ②在命令里安装PyInstaller 如下图,我是在Anaconda的python环 ...

  9. 怎么把写好的python代码打包成exe-详解如何将python3.6软件的py文件打包成exe程序...

    在我们完成一个Python项目或一个程序时,希望将Python的py文件打包成在Windows系统下直接可以运行的exe程序.在浏览网上的资料来看,有利用pyinstaller和cx_Freeze进行 ...

  10. python3_将多个.py文件打包成exe程序并添加图标

    前言  我们开发的脚本一般都会用到第三方包,当别人需要用到我们脚本的时候,如果我们直接把xxx.py文件发给她,她是没有办法直接使用的,她还需要安装python解释器和安装我们使用的第三方包,这个时候 ...

最新文章

  1. uniapp 分享缩略图过大怎么办_女性胸外扩怎么办|3步带你完成改变
  2. jdbc mysql查询整行信息_JDBC获取数据库各种信息
  3. 测试计划和自动化测试思考
  4. flash 3D在线游戏
  5. 白话Elasticsearch68-ES生产集群部署重要的操作系统设置
  6. zoj-3471 Most powful
  7. Git / git clone 、git pull 和 git fetch
  8. [vue] 你们项目为什么会选vue而不选择其它的框架呢?
  9. 作者:崔代锐(1985-),男,百度外卖研发中心技术总监。
  10. Matlab(R2020a)添加工具箱Toolbox的方法(详细图解)
  11. frontend-maven-plugin插件问题解决
  12. 允许telnet 通过root用户进行访问
  13. car-like robot运动模型及应用分析(图片版)
  14. Nginx 内存池源码阅读
  15. 乐至天气预报软件测试,乐至天气预报15天
  16. 传智播客Java switch和循环
  17. JAVA idea中安装P3C方法和使用指南
  18. 英雄联盟商城登录界面
  19. Diablo3英雄榜-使用Volley和Gson来处理暴雪API的Json数据
  20. AR算法原理在计算机视觉中的应用

热门文章

  1. 生活杂谈-简单电器维修知识-2
  2. Multi-modality Latent Interaction Network for Visual Question Answering阅读笔记
  3. mysql rrd_将RRD数据库中数据导入MYSQL中_MySQL
  4. ubuntu + windows双系统默认启动项修改方法
  5. 多线程下载sis001的网友自拍贴图版面的图片
  6. python 模块相互import
  7. 如何保持精力充沛_在家工作,如何管理一支精力充沛,精力充沛的日常团队,远程站起来...
  8. JavaEE项目的三层架构
  9. 文件拷贝(6种方式)
  10. 什么是数据库的实体关系图(ERD)?