将 Python3 文件打包成 exe 文件
我们用 Python 写好的代码,如何给别人在没有配置 Python 环境的情况下直接使用呢?尤其是面向 windows 众。
因为 Python 是一门解释性的语言,离开了 Python 解释器,Python 无法执行。但是我们还有相应的解决方案,答案就是打包成 .exe 可执行文件
当然这篇正文前废话两句,一是看过之前网上的一些吐槽,因为没有学过编译原理,所以也不能不懂乱讲,姑且称之为半引用吧:
Python 的哲学是所见即所得,脚本类语言也注定了其加密性不如其他编译生成的语言(比如C++,JAVA,C#)就算封装为 exe,源代码费点力气,也几乎等于可见的,所以,打包 Python 为 exe 更多是为了易用,希望保留源码为自己心血的,还是尝试别的语言,或者纯粹采用卖服务的方式(云平台,web框架,不需要见源码就在客户端使用)
二是整个摸索过程极其凌乱,相关教程网上也比较少,所以我估计有些地方,我说的也不太多,还请多参照官方文档(虽然自我感觉被官方文档坑了)
这里只介绍 Python3,windows7 下的解决方案,Python2 的相关方案非常多,请自行摸索
首先是安装 Python3 了,去官网下,我的是 3.4 版的,可惜看的不少教程都是针对 3.3 版的。
但是我可以很负责任的说,个人情况是在 3.4 下 cxfreeze.bat 我在 script文件夹里面完全找不到,而且我安装好后直接敲那个命令出来是气死人的不是批处理命令提示
我真想说,看 DOS 一次次弹出这个的时候,真的想吐血,真的心中一万匹草泥马奔腾而过
但是问题还要解决啊,那么怎么做呢?
首先你先要让 DOS 认识 Python 这个命令,怎么做呢?
计算机 -> 系统属性 -> 高级系统设置 -> 环境变量 -> 系统变量
path 里面加上你的 Python3 所在的目录,前后相隔用; 当然也可以在 Dos 里面设置,但是 Dos 里面设置感觉比 GUI 设置还麻烦
我的是这样子的:

然后就是主角出场了, cx_Freeze,帮助我们把 Python3 文件打包成 exe文件的工具,首先,要下载下来用,资源挂载 sourceforge 上
http://sourceforge.net/projects/cx-freeze/files/
选个合适自己机器的下载吧,我下载的是最新版的 windows64 位版本

然后点开安装,因为下好各种找不到 bat 折腾了半天。
我觉得千言万语都不如看这两个网页有用,官方例子(http://t.cn/REli4pL)和使用方法(http://t.cn/REliK8R)
比较赞的是,用这个工具(目前)没有出现对中文支持不良好的例子,我也在此放在自己的例子
将你的源代码和 setup.py 放在同一路径下,cd 到对应的路径,执行如下命令

耐心等待即可,这个工具会帮你把必要的库也打包进去,当然能不能打第三方库未测试(应该可以)
放上我设置的对应代码
hello.py
# -*- coding: utf-8 -*-
import time
while True:
print("一分钟显示一次")
time.sleep(60) # Delay for 1 minute (60 seconds)
setup.py
from cx_Freeze import setup, Executable
executables = [
Executable('hello.py')
]
setup(name='hello',
version='0.1',
description='Sample cx_Freeze script',
executables=executables
)
当然肯定还可以进阶设置,我这个只是最简配置,点开 exe 直接用那种,比如那个 .ico 参数设置下,应该是可以把你生成的 exe 的图标设置为你设置的 icon 样
如果觉得 exe 一下就跳掉了,print 信息都看不到的话,像我代码示例里面一样,导入 time 模块,加上 sleep 方法,delay 一下就可以了~
转载:http://jimmy66.com/1102.html
Python学习交流群:238757010
将 Python3 文件打包成 exe 文件的更多相关文章
- Pycharm下将py文件打包成exe文件
1. 在PyCharm下安装PyInstaller 1. 首先,打开自己要发布的工程 2. 点击底部的[Terminal]打开终端,中输入命令pip install pyinstaller后回车, ...
- 将py文件打包成exe文件
PyInstaller工具是跨平台的,它既可以在 Windows平台上使用,也可以在 Mac OS X 平台上运行.在不同的平台上使用 PyInstaller 工具的方法是一样的,它们支持的选项也是一 ...
- pyinstaller相关问题 & pygame文件打包成exe文件 & 武装飞船 & 飞机大战
自己照书写了一个飞机大战游戏的python程序,想把它打包成一个exe文件,在查阅相关教程并经过数次尝试后终于成功. 安装打包应用 pyinstaller 在cmd命令窗口下pip install p ...
- 将python项目.py文件打包成.exe文件
安装pyinstaller包 pip3 install pyinstaller 如果不行 pip3 install pyinstaller -i https://pypi.doubanio.com/s ...
- Python文件打包成EXE文件
工具:pyinstaller 安装:pip install pyinstaller 使用: 1 将依赖文件集中到一个文件夹: pyinstaller -D -w xxx.py ...
- [Python]项目打包:5步将py文件打包成exe文件 简介
1.下载pyinstaller并解压(可以去官网下载最新版): http://nchc.dl.sourceforge.net/project/pyinstaller/2.0/pyinstaller-2 ...
- [Python]项目打包:5步将py文件打包成exe文件(转)
1.下载pyinstaller并解压(可以去官网下载最新版): http://nchc.dl.sourceforge.net/project/pyinstaller/2.0/pyinstaller-2 ...
- .py文件打包成.exe文件
# 使用pyinstaller模块 # pip install pyinstaller # 在命令行执行 pyinstaller -F xxx.py
- python的py文件打包成exe
一.首先需要安装Pyinstaller-- 使用pip来安装模块 (我电脑上装的是python的一个编译环境Anaconda,如果电脑上装的是python自带的IDE的话,就直接进入python的安装 ...
随机推荐
- windows C++ new/delete内存大小
转载自:https://blog.csdn.net/will_hsbsch/article/details/21124055 windows 上,但使用C++语言new一块内存,用指针P指向这块内存, ...
- 第一篇markdown笔记
博客的样式设置 1 2 3 参考第一篇博客 参考第二篇博客 高效的写博客 博客园虽然支持markdown,但是好多快捷键都不支持,以后可以先在马克飞象上写好markdown笔记,再复制到博客上.
- jQuery中异步请求
1.load方法 使用load()方法通过Ajax请求加载服务器中的数据,并把返回的数据放置到指定的元素中,它的调用格式为: $(selector).load(URL,data,callback); ...
- 【CSS】iconfont的使用
说到浏览器对@font-face的兼容问题,这里涉及到一个字体format的问题,因为不同的浏览器对字体格式支持是不一致的,这样大家有必要了解一下,各种版本的浏览器支持什么样的字体,前面也简单带到了有 ...
- week9:Recommender Systems
Collaborative filtering 的原理不是很理解? xi 是每一步电影的特征向量,表示浪漫/动作
- 升级到 OS EI 后 cocoa pods
安装: sudo gem install -n /usr/local/bin cocoapods 如果出现:pod :command not found 解决办法 S1:cd /Library/Rub ...
- Node 192.168.248.12:7001 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
[root@node00 src]# ./redis-trib.rb add-node --slave --master-id4f6424e47a2275d2b7696bfbf8588e8c4c3a5 ...
- statsvn,代码统计
#! /bin/bash # 计算有效变更代码量的脚本 #./svnCount -thttps://192.168.1.1/xxx -s1000 -e2000 -uxxx -pxxx version( ...
- Java中的IO流(六)
上一篇<Java中的IO流(五)>把流中的打印流PrintStream,PrintWriter,序列流SequenceInputStream以及结合之前所记录的知识点完成了文件的切割与文件 ...
- 不会发布npm包?进来看看?
前言 npm(Node Package Manager),一个Node的包管理器,平时我们常用的公共模块(插件)或者叫做包大多都放在上面,所以接下来要封装的插件,我们就简单称它为npm包,本文从就从这 ...