将 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的安装 ...
随机推荐
- [19/04/28-星期日] GOF23_结构型模式(享元模式)
一.享元模式(FlyWeight,轻量级) [共享类与非共享类] /*** *FlyweightFactory享元工厂类: 创建并管理享元对象,享元池一般设计成键值对 */ package cn.sx ...
- parse.JSON()报错是什么原因?
哪里出错了? JSON.parse() 会把一个字符串解析成 JSON 对象.如果字符串书写正确,那么其将会被解析成一个有效的 JSON,但是这个字符串被检测出错误语法的时候将会抛出错误. 示例 JS ...
- wfst讲解
一.比较好的博客 1.0 官方网站 1.1 语音识别解码器(1)—自动机与半环 1.2 走进语音识别中的WFST 1.3Kaldi WFST 构图 学习 二.比较好的paper 三.开源项目 3.1 ...
- QT 简单 TCP 通信,发送数据到服务器
1.首先 添加头文件 #include <QtNetwork/QTcpSocket> 并且 在 xxx.pro(xxx指工程的名称) 中QT += core gui下面,添加 下面两句句话 ...
- oracle数据库——常用的数据类型
2018-12-19 23:08:03 oracle数据库中常用的数据类型有23种,我们把数据类型分为字符型.数字型.日期型和其他数据类型. 一.字符型: 数据类型 取值范围 (字节) 说明 v ...
- Docker学习系列(一)-CentOS7下安装Docker
CentOS7下Docker的安装 一.操作系统要求 CentOS 7 64位 Kernel 3.10+ 本机系统信息 二.卸载旧版本 如果之前安排过旧版本的Docker,先卸载掉旧版Docker以及 ...
- IntelliJ IDEA(2018)安装和破解。
一.下载并安装, IntelliJ IDEA的官网:https://www.jetbrains.com 二.破解. 百度下载一个 JetbrainsCrack-2.6.2.jar ...
- MyEclipse报错:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException Communications link failure
数据库服务没有开或者是驱动那块的问题
- MongoDB DBA 实践5-----复制集集群的数据同步和故障转移
(1)复制集集群的数据同步 1>主节点数据库test,在其中goods集合中加入一个文档. 2>在副节点中查看 注意:SECONDARY是不允许读写的,要使用rs.slaveOk()获得读 ...
- A1037
给两个序列,一一对应相乘,求最大和. 0不算数,输入时按正负共分为4个数组. #include<cstdio> #include<algorithm> #include< ...