900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > [转载] Linux+树莓派3开发总结——cx_Freeze打包Python3程序(工程文件)

[转载] Linux+树莓派3开发总结——cx_Freeze打包Python3程序(工程文件)

时间:2019-05-18 13:58:19

相关推荐

[转载] Linux+树莓派3开发总结——cx_Freeze打包Python3程序(工程文件)

参考链接: 在Python中使用CX_Freeze

Python是一个脚本语言,被解释器解释执行。它的发布方式:

.py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各种库。(Python官方的各种安装包就是这样做的) .pyc文件:有些公司或个人因为机密或者各种原因,不愿意源码被运行者看到,可以使用pyc文件发布,pyc文件是Python解释器可以识别的二进制码,故发布后也是跨平台的,需要使用者安装相应版本的Python和依赖库。 可执行文件:对于非码农用户或者一些小白用户,你让他装个Python同时还要折腾一堆依赖库,那简直是个灾难。对于此类用户,最简单的方式就是提供一个可执行文件,只需要把用法告诉Ta即可。比较麻烦的是需要针对不同平台需要打包不同的可执行文件(Windows,Linux,Mac,...)。

本文主要就是介绍最后一种方式,.py和.pyc都比较简单,Python本身就可以搞定。将Python脚本打包成可执行文件有多种方式,本文重点介绍cx_Freeze,其它仅作比较和参考。

Freezing Your Code

各种打包Python程序对比 点击打开链接

各种打包工具的对比如下(来自文章Freezing Your Code):

SolutionWindowsLinuxOS XPython 3LicenseOne-file modeZipfile importEggspkg_resources supportbbFreezeyesyesyesnoMITnoyesyesyespy2exeyesnonoyesMITyesyesnonopyInstalleryesyesyesnoGPLyesnoyesnocx_FreezeyesyesyesyesPSFnoyesyesnopy2appnonoyesyesMITnoyesyesyes

我要打包的环境是Linux+Python3,故根据情况我们采用cx_Freeze打包程序

Python3程序打包步骤:

1、下载cx_Freeze-4.3.4.tar.gz源码

2、解压源码到某个目录

3、打开终端到解压目录

4、执行python3 setup.py build

这编译会出错

build/temp.linux-x86_64-2.7/source/bases/Console.o:在函数‘GetImporterHelper’中: /home/bill/Downloads/cx_Freeze-4.3.3/source/bases/Common.c:211:对‘PyObject_CallMethod’未定义的引用 /home/bill/Downloads/cx_Freeze-4.3.3/source/bases/Common.c:215:对‘PyErr_Clear’未定义的引用 build/temp.linux-x86_64-2.7/source/bases/Console.o:在函数‘GetDirName’中: /home/bill/Downloads/cx_Freeze-4.3.3/source/bases/Common.c:66:对‘PyString_FromStringAndSize’未定义的引用 build/temp.linux-x86_64-2.7/source/bases/Console.o:在函数‘FatalError’中: /home/bill/Downloads/cx_Freeze-4.3.3/source/bases/Console.c:24:对‘PyErr_Print’未定义的引用 /home/bill/Downloads/cx_Freeze-4.3.3/source/bases/Console.c:25:对‘Py_FatalError’未定义的引用 build/temp.linux-x86_64-2.7/source/bases/Console.o:在函数‘SetExecutableName’中: /home/bill/Downloads/cx_Freeze-4.3.3/source/bases/Common.c:93:对‘PyString_FromString’未定义的引用 /home/bill/Downloads/cx_Freeze-4.3.3/source/bases/Common.c:115:对‘PyString_FromStringAndSize’未定义的引用 /home/bill/Downloads/cx_Freeze-4.3.3/source/bases/Common.c:136:对‘PyString_FromString’未定义的引用 build/temp.linux-x86_64-2.7/source/bases/Console.o:在函数‘FatalError’中: /home/bill/Downloads/cx_Freeze-4.3.3/source/bases/Console.c:24:对‘PyErr_Print’未定义的引用

查了一下 网上有修改setup.py 将其中的if not vars.get("Py_ENABLE_SHARED", 0):修改成if True:

就可以了

5、执行安装命令sudo python3 setup.py install

6、此时再次打开一个终端,输入命令:cxfreeze --help有内容说明安装

7、打包命令输入:

查询版本:

cxfreeze --version 打包文件(包含运行需要的文件):

cxfreeze ~/Desktop/Nt2000_Python1/Nt_Main.py --target-dir ~/Desktop/setup

格式为:cxfreeze 文件绝对路径 --target-dir 打包到目标可执行文件夹路径

打包成一个可执行文件命令:

cxfreeze D:/hello.py --target-dir D:/123 --no-copy-deps

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。