前言

最近写了一个小小的检测程序,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图标
 
 
 
 
 
 
 
所以可以用参数-F 让生成一个文件,输入:pyinstaller -F work1.py
 
这个文件就可以发给你的朋友们,打开后愉快的happy(装b)啦!。。
 
 

win10环境下利用pyinstaller把python代码(.py)打包成可执行文件(.exe)的更多相关文章

  1. 用Pyinstaller把Python3.7程序打包成可执行文件exe

    1.通过pip3 install pyinstaller 安装成功 2.然后执行命令,首先:需要切换到程序所在的目录 执行命令 pyinstaller -F -w <文件名.py>,-F代 ...

  2. 将python的代码文件打包成可执行文件

    1.使用pip install Pyinstaller  命令安装 2.使用命令 pyinstaller -F  *.py打包成exe 3.在\dist文件夹下找到exe; 一.pyinstaller ...

  3. 断网环境下利用pip安装Python离线安装包

    这几天搞Windows离线断网环境下安装Python包,配置环境,各种坑!做个记录,供以后查询吧. # 生产环境 windows 7 # python 2.7.9 # pip 1.5.2 友情提示:当 ...

  4. win7下用PyInstaller把Python代码打包成exe文件

    2013-11-05 22:02:14|   1.安装 使用PyInstaller需要安装PyWin32. 下载与Python对应的PyInstaller版本,解压后就算安装好了. 例如,安装了PyI ...

  5. windows环境下,spring boot服务使用docker打包成镜像并推送到云服务器私有仓库

    最近在淘宝上学习springcloud教程,其中有几节课是讲解讲本地springboot服务打包成镜像并推送到云服务器私有仓库,但是教程里面用的事Mac环境,我的是Windows环境,而且课程里面没有 ...

  6. Python脚本文件(.py)打包为可执行文件(.exe)即避免命令行中包含Python解释器

      在最近的软件工程作业中用到了将Python脚本转化为exe文件这一过程,网上各种博客介绍了很多,有些东西都不完全,我也是综合了很多种方法最后才实现的,我就把这些整理出来,希望可以帮到大家~ 一.环 ...

  7. 将Python打包成可执行文件exe的心路历程

    导言: 我们有时候需要将做好的Python程序打包成为一个exe , 方便我们使用,查找了资料发现 pyinstaller .py2exe,最后还是选择的pyinstaller,用的时候踩过了挺多的坑 ...

  8. 利用PyInstaller将python代码封装成EXE(亲测可用)

    有些不能成功,有些不全的,下面总结一下,给自己以后看看.   1下载PyInstaller..去官网下载http://www.pyinstaller.org/(我下载的版本)   2不需要安装,解压即 ...

  9. 在windows环境下利用virtualenv搭建Python虚拟环境

    安装Python 安装时只有一点需要注意,一定一定要将Python添加到系统环境变量那一项勾选. 安装 virtualenv 加入系统目录之后,命令行(CMD)下就多了一条命令:pip.用pip可以自 ...

随机推荐

  1. maven 在pom文件下配置默认的jdk版本

    在pom.xml中加入这段代码就可以了 <!-- 设置默认的jdk --> <profiles> <profile> <id>jdk1.7</id ...

  2. yaf框架加载全局公共函数

    在Boostrap里面建一个方法(按规则命名的函数都会被自动执行) public function _initCommonFunctions(){ Yaf_Loader::import(Yaf_App ...

  3. Angular Universal(统一平台)笔记

    angular官网高级文档AngularUniversal部分的翻译总结,这东西在angular4开始正式被官方支持了,目前其实支持的服务器端还没有很多,但好歹包括了node和DotNetCore,算 ...

  4. django-装饰器实现PV统计

    1.models层建立统计表 # 每日访问量统计 class Statistics(models.Model): pv = models.IntegerField(default=0) uv = mo ...

  5. eclipse hadoop1.2.0配置及wordcount运行

    "error: failure to login"问题 http://www.cnblogs.com/xia520pi/archive/2012/05/20/2510723.htm ...

  6. ELK 经典用法—企业自定义日志手机切割和mysql模块

    本文收录在Linux运维企业架构实战系列 一.收集切割公司自定义的日志 很多公司的日志并不是和服务默认的日志格式一致,因此,就需要我们来进行切割了. 1.需切割的日志示例 2018-02-24 11: ...

  7. jmeter压力测试笔记- HTTP协议

    一.目标 使用jmeter进行HTTP接口压力测试: 命令行方式运行,方便在linux环境运行: 二.面临的问题 支持多环境测试(开发.测试.生产环境) 支持用户数据.线程数.循环次数等配置在运行时自 ...

  8. 【Unity3D】Unity3D开发《我的世界》之六、创建地形(视频 + 源码)

    转载请注明出处:http://www.cnblogs.com/shamoyuu/p/unity_minecraft_06.html 一.引入LibNoise 虽然Unity3D里也有一个Mathf.P ...

  9. Jmeter_beanshell实现字符串加密

    Jmeter内置的没有MD5加密方法,所以需要写一些java代码实现加密功能,以下是具体操作: 1:用eclipse建个工程(包名.类名.方法名自己起) package com.wjika.test; ...

  10. 10种软件开发中 over-engineering 的错误套路

    别把「不要过度使用 Generic」误解成「不用 Generic」,也别把「不要写一些不必要的 Wrapper」误解成「不写任何 Wrapper」.我只是在讲 over-engineering 这个事 ...