win10环境下利用pyinstaller把python代码(.py)打包成可执行文件(.exe)
前言
最近写了一个小小的检测程序,python写起来只需要短短一百行,可是打包起来就没有C那么容易了。下面记录一下我艰难的“打包”过程。
方法一:py2exe
py2exe是一种经典的方法,为什么说他经典呢?因为这玩意取了个这么好听的名字,但是只支持到python3.4,你这让我们这种紧跟时代潮流的弄潮儿怎么打包?
好吧,放弃。
方法二:pyinstaller
这是一个看起来比较靠谱的方法,只需要用pip安装,然后在命令窗里面一通操作就可以了。在这里,我参考了另一位老哥的博客(http://blog.csdn.net/mrlevo520/article/details/51840217)
不管那么多,我直接三下五除二,开始了pip,打开Anaconda Prompt,输入”pip install pyinstaller“
我是采用Anaconda安装的python3,所以自然用的是Anaconda Prompt,这里大家应该没有什么疑问吧 :)。
结果令人惋惜:
PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。
无奈的我只好上网寻求帮助,在这位同学的博客(http://blog.csdn.net/qq_33530388/article/details/68933201)找到了解决方法,原来是编码的问题。虽然py3统一用utf-8了。但win下的终端显示用的还是gbk编码。
解决方法如下:
- 从你的python文件夹里找到pip下的compat文件夹,我的在F:\python\Anaconda3\Lib\site-packages\pip\compat
- 没错就是这里,有一个__init__.py文件,打开它,执行以下操作:
- return s.decode('utf_8') 改为return s.decode('cp936')
OK,结束后再次尝试,看看能不能解决。。
PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。好吧,还是不行。。。
不过功夫不负有心人,终于在另一个博客那里(http://blog.csdn.net/create115721/article/details/79238696),我找到了解决方法:
将刚才那个__init__.py文件中所有'utf-8'改为'gbk'。如此便解决了编码的问题。
安装完毕,接下来开始打包。
有和我一样忘了在windows的CMD中操作的同学请自觉复习(http://www.cnblogs.com/kekec/p/3662125.html),我这里就是直接进入F盘,输入“F:”,然后不停的cd到我的代码所在的文件夹。
最后执行命令:pyinstaller work1.py
结果:
这样就算是大功告成了吧,进入该目录下的dist文件夹打开看看,运行.exe文件,和下图一样没问题。可是。。我们还漏了一个重要的细节。
因为我们没有加参数,所以pyinstaller打包成散包。具体参数如下:
参数 | 定义 |
-F | 指定打包后只生成一个exe格式的文件 |
-D | –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项) |
-c | –console, –nowindowed 使用控制台,无界面(默认) |
-w | –windowed, –noconsole 使用窗口,无控制台 |
-p | 添加搜索路径,让其找到对应的库。 |
-i | 改变生成程序的icon图标 |
win10环境下利用pyinstaller把python代码(.py)打包成可执行文件(.exe)的更多相关文章
- 用Pyinstaller把Python3.7程序打包成可执行文件exe
1.通过pip3 install pyinstaller 安装成功 2.然后执行命令,首先:需要切换到程序所在的目录 执行命令 pyinstaller -F -w <文件名.py>,-F代 ...
- 将python的代码文件打包成可执行文件
1.使用pip install Pyinstaller 命令安装 2.使用命令 pyinstaller -F *.py打包成exe 3.在\dist文件夹下找到exe; 一.pyinstaller ...
- 断网环境下利用pip安装Python离线安装包
这几天搞Windows离线断网环境下安装Python包,配置环境,各种坑!做个记录,供以后查询吧. # 生产环境 windows 7 # python 2.7.9 # pip 1.5.2 友情提示:当 ...
- win7下用PyInstaller把Python代码打包成exe文件
2013-11-05 22:02:14| 1.安装 使用PyInstaller需要安装PyWin32. 下载与Python对应的PyInstaller版本,解压后就算安装好了. 例如,安装了PyI ...
- windows环境下,spring boot服务使用docker打包成镜像并推送到云服务器私有仓库
最近在淘宝上学习springcloud教程,其中有几节课是讲解讲本地springboot服务打包成镜像并推送到云服务器私有仓库,但是教程里面用的事Mac环境,我的是Windows环境,而且课程里面没有 ...
- Python脚本文件(.py)打包为可执行文件(.exe)即避免命令行中包含Python解释器
在最近的软件工程作业中用到了将Python脚本转化为exe文件这一过程,网上各种博客介绍了很多,有些东西都不完全,我也是综合了很多种方法最后才实现的,我就把这些整理出来,希望可以帮到大家~ 一.环 ...
- 将Python打包成可执行文件exe的心路历程
导言: 我们有时候需要将做好的Python程序打包成为一个exe , 方便我们使用,查找了资料发现 pyinstaller .py2exe,最后还是选择的pyinstaller,用的时候踩过了挺多的坑 ...
- 利用PyInstaller将python代码封装成EXE(亲测可用)
有些不能成功,有些不全的,下面总结一下,给自己以后看看. 1下载PyInstaller..去官网下载http://www.pyinstaller.org/(我下载的版本) 2不需要安装,解压即 ...
- 在windows环境下利用virtualenv搭建Python虚拟环境
安装Python 安装时只有一点需要注意,一定一定要将Python添加到系统环境变量那一项勾选. 安装 virtualenv 加入系统目录之后,命令行(CMD)下就多了一条命令:pip.用pip可以自 ...
随机推荐
- ERROR namenode.NameNode: Failed to start namenode. java.lang.IllegalArgument
这个问题一般是配置文件配置没有配置好的原因
- Java语言的分支
JavaSE:(标准版)是java基础,早期叫j2se,2005改名叫JavaSE(必须). JavaME:(移动版)适合移动端的开发.j2me,2005改名叫java ME(不学) JavaEE:( ...
- PAT 1003. Emergency 单源最短路
思路:定义表示到达i的最短路径数量,表示到达i的最短径,表示最短路径到达i的最多人数,表示从i到j的距离, 表示i点的人数.每次从u去更新某个节点v的时候,考虑两种情况: 1.,说明到达v新的最短路径 ...
- HDU - 1248 寒冰王座 数学or暴力枚举
思路: 1.暴力枚举每种面值的张数,将可以花光的钱记录下来.每次判断n是否能够用光,能则输出0,不能则向更少金额寻找是否有能够花光的.时间复杂度O(n) 2.350 = 200 + 150,买350的 ...
- WC2016自测
挑战NPC 原题链接 爆搜20分,贪心10分,网络流30分 //挑战NPC #include <cstdio> #include <cstring> #include < ...
- Selenium里可以自行封装与get_attribute对应的set_attribute方法
我们在做UI自动化测试的过程中,某些情况会遇到,需要操作WebElement属性的情况. 假设现在我们需要获取一个元素的title属性,我们可以先找到这个元素,然后利用get_attribute方法获 ...
- Spring IO Platform 解决Spring项目组合中版本依赖
简介: Spring IO Platform是Spring官网中排第一位的项目.它将Spring的核心API集成到一个适用于现代应用程序的平台中.提供了Spring项目组合中的版本依赖.这些依赖关系是 ...
- 网络基础Cisco路由交换三
热备份路由协议HSRP:Cisco私有协议 确保了当网络边缘设备或接入链路出现故障时,用户通信能迅速并透明地恢复,以此为ip网络提供余性,通过使用同意虚拟ip地址和虚拟mac地址,LAN网段上的两台或 ...
- 使用sql语句获取数据库表的信息
下面的sql语句可以查看表的信息.其中modify_date和create_date可以根据表的修改时间来查看.如果不需要删除后,就能看到所有表的字段信息 ) PERCENT d.name AS 表名 ...
- 1.3 PCI总线的存储器读写总线事务
总线的基本任务是实现数据传送,将一组数据从一个设备传送到另一个设备,当然总线也可以将一个设备的数据广播到多个设备.在处理器系统中,这些数据传送都要依赖一定的规则,PCI总线并不例外. PCI总线使用单 ...