Python脚本打包为exe文件

简介:
把Python脚本和所用到的库打包为exe文件,可以更方便的发布程序,避免使用程序的每个电脑都必须安装Python。
网上有不少相关介绍,但很少见到Python 3.x下打包Python脚本为exe的成功案例,笔者探索了一下,成功完成了任务,记录下来分享给需要的朋友。欢迎交流。

一、Python 3.1的打包办法
1、下载cx_Freeze。
http://sourceforge.net/projects/cx-freeze/files/
根据自己的系统类型和Python版本下载合适的类型,我下载的是:cx_Freeze-4.1.2.win32-py3.1.msi。
这个工具目前最新版本是2010.1.6号的,还挺新的。
2、安装。
直接安装下载的安装包。
之后可以看到cxfreeze工具所在目录如下:
3、打包。
我要打包的是BlogPost.py和它依赖的模块。
A、准备工作。
a、去除代码中所有中文字符,包括注释。(指定编码的注释可以不去掉没有关系)
b、如果用到类似lxml这样的第三方库,可能会出现找不到_elementpath模块的错误。需要在某个.py文件中写上import _elementpath as DONTUSE,并且指定该模块的搜索路径。(我的该模块所在路径是:C:\Python25\Lib\site-packages\lxml\_elementpath.py)
B、命令行执行。
C:\Python31\Scripts\cxfreeze.bat --include-path=C:\Python25\Lib\site-packages\lxml --init-script=D:\Projects\Google\pyblogpost\2exe\BlogPost.py BlogPost.py
注意:
(1)--init-script指定的启动文件路径必须用绝对路径,否则会提示找不到init script。
(2)只能指定一个要打包的模块,也就是启动模块。
(3)所有.py文件都不能有中文字符,否则会出现编码异常。
(4)执行上述命令后,在会生成dist目录,里面就有打包后的可执行文件。
(5)发布后,可执行文件执行路径不能有中文(最好也不要有空格)。而且最好发布dist目录所有文件,我发现有时只发布打包后的exe是无法运行的。
(6)启动执行的文件中不要有下面这种判断,否则可执行文件执行会没有任何效果。
if __name__ == "__main__":
main()
(7)如果没有指定--include-path,或者没有在某个.py文件中写上import _elementpath as DONTUSE,都会出现如下找不到_elementpath模块的错误:
D:\Projects\Google\pyblogpost\2exe\dist>BlogPost.exe
Traceback (most recent call last):
  File "D:\Projects\Google\pyblogpost\2exe\BlogPost.py", line 11, in <module>
    import BlogConfig
  File "BlogConfig.py", line 5, in <module>
  File "ExtensionLoader_lxml_etree.py", line 12, in <module>
  File "lxml.etree.pyx", line 39, in init lxml.etree (src/lxml/lxml.etree.c:1399
44)
ImportError: No module named _elementpath
(8)不能有中文,即使是注释中也不能有,否则出现如下错误。
    codeString = fp.read()
  File "C:\Python31\lib\codecs.py", line 300, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 557-558: invalid
 data
尝试把编码由cp936改为utf-8,也不可以,把文件中ASCII另存为UTF-8,也不行,有如下错误:
  File "BlogConfig.py", line 1
    \ufeff#!/usr/bin/python
      ^
SyntaxError: invalid character in identifier

4、补充说明另外一种打包方式。
第3点讲的是通过命令行指定参数打包,也可以采用如下方式:
(1)新建setup.py文件,内容大致如下:(我使用的是上述第3点讲述的方法,没有修改参数)
(2)在命令行执行:python setup.py build
这种打包方法,在cxfreeze工具的sample中也大量使用。
二、Python 2.x版本
上面的cx_Freeze同样提供for Python 2.x的版本,用法我估计也差不多,不再赘述。
加上这一节,是记录一下之前我用Python 2.x写一个小工具用py2exe打包的过程。
先安装py2exe工具。
然后用下面setup.py脚本: 
from distutils.core import setup
import py2exe
options = {"py2exe": {"bundle_files": 1}}      
setup(options = options,
      zipfile = None,
    console=["hello.py"],) 
命令行执行: 
C:\Python26\python.exe setup.py py2exe 
就会在dist目录生成单一的hello.exe文件,这个文件是可执行的。















本文转sinojelly51CTO博客,原文链接:http://blog.51cto.com/sinojelly/278151 ,如需转载请自行联系原作者
相关文章
|
4月前
|
数据可视化 Linux iOS开发
Python脚本转EXE文件实战指南:从原理到操作全解析
本教程详解如何将Python脚本打包为EXE文件,涵盖PyInstaller、auto-py-to-exe和cx_Freeze三种工具,包含实战案例与常见问题解决方案,助你轻松发布独立运行的Python程序。
1289 2
|
4月前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
538 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
3月前
|
监控 机器人 编译器
如何将python代码打包成exe文件---PyInstaller打包之神
PyInstaller可将Python程序打包为独立可执行文件,无需用户安装Python环境。它自动分析代码依赖,整合解释器、库及资源,支持一键生成exe,方便分发。使用pip安装后,通过简单命令即可完成打包,适合各类项目部署。
|
4月前
|
API 语音技术 开发者
Python 项目打包,并上传到 PyPI,分享项目
本文介绍了如何使用 Poetry 打包并发布一个 Python 项目至 PyPI。内容包括:项目创建、配置 `pyproject.toml` 文件、构建软件包、上传至 PyPI、安装与使用。通过实例 iGTTS 展示了从开发到发布的完整流程,帮助开发者快速分享自己的 Python 工具。
|
5月前
|
JSON API 开发者
深度分析阿里妈妈API接口,用Python脚本实现
阿里妈妈是阿里巴巴旗下营销平台,提供淘宝联盟、直通车等服务,支持推广位管理、商品查询等API功能。本文详解其API调用方法,重点实现商品推广信息(佣金、优惠券)获取,并提供Python实现方案。
|
5月前
|
API 数据安全/隐私保护 开发者
深度分析苏宁API接口,用Python脚本实现
深度分析苏宁API接口,用Python脚本实现
|
安全 编译器 开发者
Python打包成.exe文件直接运行
Python打包成.exe文件直接运行
2280 1
|
Linux 区块链 Python
Python实用记录(十三):python脚本打包exe文件并运行
这篇文章介绍了如何使用PyInstaller将Python脚本打包成可执行文件(exe),并提供了详细的步骤和注意事项。
638 1
Python实用记录(十三):python脚本打包exe文件并运行
|
区块链 Python
最详细Python打包exe教程,并修改图标,只需30秒
最详细Python打包exe教程,并修改图标,只需30秒
1166 4
最详细Python打包exe教程,并修改图标,只需30秒
|
XML JSON Ubuntu
Python实用记录(十五):PyQt/PySide6打包成exe,精简版(nuitka/pyinstaller/auto-py-to-exe)
本文介绍了使用Nuitka、PyInstaller和auto-py-to-exe三种工具将Python的PyQt/PySide6应用打包成exe文件的方法。提供了详细的安装步骤、打包命令和参数说明,适合新手学习和实践。
5473 0

推荐镜像

更多