星光

将Python3文件打包成exe文件

id = 49718332


 

我们用Python写好的代码,如何给别人在没有配置Python环境的情况下直接使用呢?尤其是面向windows众

因为Python 是一门解释性的语言,离开了Python解释器,Python无法执行。但是我们还有相应的解决方案,答案就是打包成 .exe 可执行文件

当然这篇正文前废话两句,一是看过之前网上的一些吐槽,因为没有学过编译原理,所以也不能不懂乱讲,姑且称之为半引用吧:

 

Python的哲学是所见即所得,脚本类语言也注定了其加密性不如其他编译生成的语言(比如C++,JAVA,C#)就算封装为exe,源代码费点力气,也几乎等于可见的,所以,打包Python为exe更多是为了易用,希望保留源码为自己心血的,还是尝试别的语言,或者纯粹采用卖服务的方式(云平台,web框架,不需要见源码就在客户端使用)

 

二是整个摸索过程极其凌乱,相关教程网上也比较少,所以我估计有些地方,我说的也不太多,还请多参照官方文档(虽然自我感觉被官方文档坑了)


 

这里只介绍Python3,windows7下的解决方案,Python2的相关方案非常多,请自行摸索

首先是安装Python3了,去官网下,我的是3.4版的,可惜看的不少教程都是针对3.3版的,比如这个:

用cxfreeze打包Python3.3成exe文件

但是我可以很负责任的说,个人情况是在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,折腾了半天

最后找到了这篇文

Python3打包成单个exe文件

看他的说明还不太懂,最终搜到对应的文档,以及最重要的且直观的例子。。。代码托管在bitbucket上。。。

坦白说,这次sourceforge+bitbucket的环境搭档真的把检索习惯google+github的我坑苦了,stackoverflow上也鲜有类似的问答

我觉得千言万语都不如看这两个网页有用,官方例子使用方法 

比较赞的是,用这个工具(目前)没有出现对中文支持不良好的例子,我也在此放在自己的例子

将你的源代码和setup.py放在同一路径下,cd到对应的路径,执行如下命令

耐心等待即可,这个工具会帮你把必要的库也打包进去,当然能不能打第三方库未测试(应该可以)

放上我设置的对应代码

hello.py

setup.py

当然肯定还可以进阶设置,我这个只是最简配置,点开exe直接用那种,比如那个.ico参数设置下,应该是可以把你生成的exe的图标设置为你设置的icon 样

如果觉得exe一下就跳掉了,print信息都看不到的话,像我代码示例里面一样,导入time模块,加上sleep方法,delay一下就可以了~


 

以上,最后一点小感想(完全可以不看):

上学期我接触Linux后一直觉得微软不怎么打压外加ZF不管制反而利用windows盗版的行为,把我国的整个计算机氛围都给坑惨了,学的很多教材都是大多都是针对微软的闭源产品的使用,以及亲windows的相关配置,而针对Linux以及开源技术的材料真是少之又少

三级考的数据库也是SSQL,明显与实际生产环境严重脱节,GUI而非命令行的学习,本质上也就是在学别人造的轮子,因为GUI只是命令行的固有封装,不可能突破其本身的功能(这里没说PS,AE这种艺术类软件)

而学习命令行和Linux却可以打造属于自己的东西

嘛,不过这学期想法也有些改变,如果没有微软的盗版windows,可能现在也没有那么多人能成为“技术宅”,生产者们面对没有消费者的市场也无法更好地进行创造。电脑本身都无法普及,更重要的是 好用 ,就更别谈发展技术了,缺乏需求也就没有了动力

但是类似Ubuntu能在对于盗版持强硬态度ZF的契机下更windows一下,或许情况又会不一样吧。虽然没去过国外,但是感觉国外用Linux中的一部分人确实就是因为不想花钱买系统,而这种在中国的Linuxer眼中看起来的比较掉价的Linuxer,吊打国内100个360大法好应该也是无压力了,并且对IT的整体气氛带动应该也是极好的

当然想到最后还是觉得不可能,微软睁一只眼闭一只眼是因为有盈利,市场覆盖也是潜在的金子(比如现在的各种预装正版windows)

ZF不持强硬态度是因为,教育体制本质上的创造力缺乏,外加爱做努力的无用功(重复劳动),而不是追求新技术的不断求知,放下架子,并且追求行政端的易用性,群众端的易管制性(我觉得用Linux的人都不会允许360强奸自己的电脑)

而最后Linux社区是自由的,从时间溯源回去,大环境也是非中国的意识体系下的,追求的是自由和个性,也就不存在着什么普及度和易用性的负担和指标


最后,这是官网 http://cx-freeze.sourceforge.net/

谨以此文,纪念被windows坑过的前辈们,以及向用Python做课题的后辈们致敬~

如无特殊声明,欢迎转载,但是请注明来自星之所在《将Python3文件打包成exe文件》

评论

  1. Starlight #1

    文章写得有些乱,见谅,最近不怎么会写文

    回复
    2015-04-12
  2. eddie32 #2

    有些东西也是在慢慢变化的。 比如说ZF的办公软件现在与Microsoft合作已经开始正版化, 这是因为你所处的环境接触不到实际情况。 虽然学校里面没教, 但是网络这么发达其实也不需要教, 翻墙google一下各种技术都有了。

    回复
    2015-04-16
    • Starlight

      嗯,我反正是明确知道,只靠等学校教的东西过活是完全没有实战力的,以至于最近有老师问我你为什么学Python,学校教Python吗?那你为什么要学的时候,真是内心极度地嘲讽。不过个体可以自主学习,整体还是要看ZC和教学导向的,这个是没得推的。另外别说学生了,现在很多老师都在百度着呢

      回复
      2015-04-16
      • eddie32

        老师那个年代.计算机不行可以允许.学生的话就不要这么水了~大致就是兼顾学校然后提升自己吧, 其他人怎么样who cares?

        回复
        2015-04-16
        • Starlight

          其他人的好坏和受教育间接影响自己的生活体验,看问题还是不能只看局部。另外完全脱离周围环境谈自我提升,就算是在网络时代也是站不住脚的~我只是吐槽,你也别想多了

          回复
          2015-04-16
          • eddie32

            233其实你瞧不起他们~

            2015-04-17
          • Starlight

            原来瞧不起,现在态度改变了

            2015-04-18
  3. AvalonDragoN龙龙 #3

    闭源也没有那么糟糕,毕竟需要赚钱。反倒苹果现在的一些动作更封闭,更暴利。python其实有保密性更好的exe打包就好了。

    回复
    2015-08-7
  4. eric #4

    py2exe 相当好用 Python3

    回复
    2015-10-11
    • Starlight

      这个支持Python3了吗?我记得之前看到貌似是只支持2

      回复
      2015-10-11
      • eric

        https://pypi.python.org/pypi/py2exe/ pip 安装的一直是python3 版本 python2 版本只有 sourceforge 上那个。。

        回复
        2015-10-12
        • Starlight

          好滴,我回头试试~THX,看来邮件提示可以收到啊,对吧

          回复
          2015-10-12
        • ipyer

          好像只能到3.3版吧

          回复
          2016-01-30