关于Python的应用发布技术

简介:

收集如何 将Py应用打包发布的各种技巧:   

1.1. 工具

{{{k <yanbo.yuan@gmail.com reply-to python-cn@googlegroups.com to python-cn@googlegroups.com date Tue, Apr 1, 2008 at 2:58 PM  subject [CPyUG:45605]}}}[http://groups.google.com/group/python-cn/t/24fbb899f27df30e 将Python程序转化为可执行程序~整理]    

工欲善其事,必先利其器.python是解释型的语言,但是在windows下如果要执行程序的话还得加个python shell的话,未免也太麻烦了.而这里所说的东西就是将python程序转换为exe文件.下面是一些常用的工具,不过似乎py2exe应用的更加广泛一些.   

1.1.1. py2exe

  • http://py2exe.sf.net   

    只支持windows平台,应该是大家听到最多的一个名字了,用户不少,所以有问题的话在它的mail list里面很容易找到答案。文档中提到了"无法找到某某code"、使用opengl等模块的问题   

1.1.2. PyPackage

  • http://codereactor.net/projects/pypack/index.html

    我觉得py2exe等等工具还是罗嗦得像唐僧,需要在配置文件中写上需要的数据文件。作者完全无视这样一个事实:我需要发布可执行文件的时候,程序已经完工了,所有的数据文件就在主程序所在目录下,所以多数情况下,根本不用到别的地方搜索。现在终于有人站了出来,PyPackage实际上并不是一个程序打包的工具,而只是简化py2exe的操作,甚至可以自动调用InnoSetup 5制作安装文件


不过这个软件并不智能,会打包很多不需要的文件

1.1.3. Installer

  • http://www.mcmillan-inc.com/installer_dnld.html

    可以产生windows、linux平台的可执行文件,现在作者主页连不上去了,但是搜索一下可以在其它地方下载 自带一个小程序写配置文件,如果程序较复杂,还是需要手工修改这个配置文件。支持从py15以来的所有Python版本

  • 2005 年9月,冰冻牡蛎更新:Giovanni Bajo获得Gordon McMillan's Installer的授权、版权改变为GPL,

  • 2006年9月更新:这里可以看到 Gordon McMillan's的原始网站的镜像

     

1.1.4. Python自带的freeze.py

(不过windows版本不带这个,你可以自己下载Python的源程序再找)。 这个是我最不推荐的一种方法(为什么?自己看),不过如果你的Python程序要发布到其它工具不支持的平台上,可以考虑这个方法

1.1.5. Pyco

新出来的 http://www.pythonapocrypha.com/projects/pyco/  还没用过

1.1.6. Squeeze

1.1.7. cx_Freeze

1.1.8. Stand alone Python for Windows

  • 如果你看一看它的VC源代码,就不会这么想了

其实这是普遍适用于win系统的方法,无论是98、2000或者xp。也许也可以用到linux上


我不懂linux,如果真的可以这么做,还请告诉我。

1.1.9. py2app

  • http://undefined.org/python/

     支持linux平台的工具可能也支持mac os,或者直接使用这个py2app。具体就不知道了,只吃过苹果,还没玩过苹果呢

1.1.10. Movable Python

  • http://www.voidspace.org.uk/python/movpy/

     这个其实是使用py2exe制作的、可以放在U盘上的绿色Python。有使用py2app制作苹果版movpy和用cx_Freeze制作Linux版movpy的计划。懒到都不愿意学习py2exe、py2app或者cx_Freeze的人可以看看。

1.1.11. Shed Skin

- A Python-to-C++ Compiler:

  • 试验项目,windows上,连他的例子我都没有编译成功 :(。

1.1.12. Jungle

: 使用GNU工具(as、ld和winres)把Python程序编译到windows的exe可执行文件。

  • 该可执行文件只使用基于python24的的pythonic.dll。
  • 猜测它支持的模块仅限于内部模块以及jungle.jgl列出的模块。
  • 只有可执行文件下载,而这个可执行文件也是用Jungle自己编译的。
    • 目前版本号都到1.10了,经常看0.xx的版本号,这个数字好大啊,娃哈哈。

1.1.13. 另类的方法

,对Python语言特性都还不是100%支持,众多的CPython模块也不可以使用,还有,我也没有试过:

for .NET的Python编译器
  • (如Visual Python、IronPython),不过我可不喜欢为了一个芝麻大的软件安装.NET framework

     

  • 用jython,然后用jbuilder、jsmooth、NativeJ之类的包裹一下,或者用gcj编译成本地代码

1.1.13.1. Psyco

: 给Python程序加速的东西,看不出对发布Python程序的直接好处,并且作者以后将致力于PyPy

1.1.13.2. PyPy

: 项目目标是纯Python实现的Python、速度比CPython快,将来可以帮助实现编译Python。

1.1.13.3. pyc

: Python compiler in Python,一个用纯Python写的Python的bytecode编译器,可以优化输出的pyc文件。

  • PyPy一样,现在还看不出对发布Python程序的直接好处。只有py24的bytecode。

     

  • pyc是pyvm这个新的python虚拟机的一部分。

1.1.13.4. Pyrex

使用Pyrex

  • 直接将Python 应用编译成 C 代码,然后,自然就生成.exe 了

1.2. 体验

1.2.1. PyInstaller

{{{nEO (a.k.a. gentoo.cn) <gentoo.cn@gmail.comreply-to python-cn@googlegroups.comto python-cn@googlegroups.comdate Wed,

Apr 2, 2008 at 12:34 AM }}} http://pyinstaller.python-hosting.com/

吸取了py2exe的优点, 支持打包成一个可执行文件, 支持upx壳, 支持多平台 体积比py2exe生成的小 我现在用这个替代py2exe了

1.2.2. NSIS

{{{Gerald Lee <leejd80@gmail.comreply-to python-cn@googlegroups.comto python-cn@googlegroups.comdate Tue, Apr 1,

2008 at 8:19 PM subject [CPyUG:45664] Re: 将Python程序转化为可执行程序[整理] }}}

  • 这两天一直在写NSIS脚本做安装程序,因为是N个模块定制安装的,所以我用python写,然后输出NSI脚本文件,再逐个编译,以产生需要的安装文件。
  • 写脚本的过程突然发现一个问题,是不是可以使用nsis脚本来引导python程序呢?以前一直是用bat文件引导的。顺手写了一个,测试感觉可行,生成的一个exe文件33K,NSIS代码如下:

Name "Python Launcher"Icon "images\shipping.ico"OutFile "GridOK.exe"SilentInstall silentAutoCloseWindow trueShowInstDetails nevershowSection ""  
Exec "pythonw GridOK.py";这里可能需要变动一下SectionEnd

参考资料:

1.2.3. 实例 Py2exe

在最后,给一个人学习py2exe的文章,帮助学习: 最近学了一点PYTHON,想把PYTHON写的程序转换成EXE文件,在网上查到了资料后发现了这个东东 写下来做一下记录。 英文教程:

Python 2.5 + Py2exe 工作目录:c:\python25

首先随便写一个程序
  • hello.pyprint "Hello World!"
测试一下是否能运行
  • python hello.py结果:Hello World

到www.py2exe.org下载 PY2exe ,或者在SF上下载

 

接下来直接安装PY2EXE包
  • 。。它是一个安装文件。。直接装就行了。
  • 下在编写一个设置的PY文件 setup.py

    from distutils.core import setupimport py2exesetup(console=['hello.py'])

运行:python setup.py py2exe   出现以下信息后,在DIST目录里,就会有一个hello.exe 即成功。

running py2exe
*** searching for required modules***
*** parsing results ***
creating python loader for extension 'zlib'
creating python loader for extension 'unicodedata'
creating python loader for extension 'bz2'
*** finding dlls needed ***
*** create binaries ***
*** byte compile python files ***
byte-compiling C:\Tutorial\build\bdist.win32\winexe\temp\bz2.py to bz2.pyc
byte-compiling C:\Tutorial\build\bdist.win32\winexe\temp\unicodedata.py to unicodedata.pyc
byte-compiling C:\Tutorial\build\bdist.win32\winexe\temp\zlib.py to zlib.pyc
skipping byte-compilation of c:\Python24\lib\StringIO.py to StringIO.pyc
[skipping many lines for brevity]
skipping byte-compilation of c:\Python24\lib\warnings.py to warnings.pyc
*** copy extensions ***
*** copy dlls ***
copying c:\Python24\lib\site-packages\py2exe\run.exe -> C:\Tutorial\dist\hello.exe
*** binary dependencies ***
Your executable(s) also depend on these dlls which are not included,
you may or may not need to distribute them.
Make sure you have the license if you distribute any of them,
 andmake sure you don't distribute files belonging to the operating system.  
ADVAPI32.dll - C:\WINDOWS\system32\ADVAPI32.dll  
USER32.dll - C:\WINDOWS\system32\USER32.dll  
SHELL32.dll - C:\WINDOWS\system32\SHELL32.dll  
KERNEL32.dll - C:\WINDOWS\system32\KERNEL32.dll


   ,如需转载请自行联系原作者
相关文章
|
2天前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
21 6
|
3天前
|
数据采集 数据安全/隐私保护 开发者
非阻塞 I/O:异步编程提升 Python 应用速度
非阻塞 I/O:异步编程提升 Python 应用速度
|
3天前
|
数据可视化 开发者 Python
Python GUI开发:Tkinter与PyQt的实战应用与对比分析
【10月更文挑战第26天】本文介绍了Python中两种常用的GUI工具包——Tkinter和PyQt。Tkinter内置于Python标准库,适合初学者快速上手,提供基本的GUI组件和方法。PyQt基于Qt库,功能强大且灵活,适用于创建复杂的GUI应用程序。通过实战示例和对比分析,帮助开发者选择合适的工具包以满足项目需求。
27 7
|
3天前
|
数据采集 前端开发 中间件
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第26天】Python是一种强大的编程语言,在数据抓取和网络爬虫领域应用广泛。Scrapy作为高效灵活的爬虫框架,为开发者提供了强大的工具集。本文通过实战案例,详细解析Scrapy框架的应用与技巧,并附上示例代码。文章介绍了Scrapy的基本概念、创建项目、编写简单爬虫、高级特性和技巧等内容。
19 4
|
4天前
|
机器学习/深度学习 数据可视化 数据处理
Python在数据科学中的应用###
本文探讨了Python语言在数据科学领域的广泛应用及其重要性。通过分析Python的简洁语法、强大的库支持和跨平台特性,阐述了为何Python成为数据科学家的首选工具。文章还介绍了Python在数据处理、分析和可视化方面的具体应用实例,展示了其在提升工作效率和推动科学研究方面的巨大潜力。最后,讨论了未来Python在数据科学领域的发展趋势和挑战。 ###
|
2天前
|
数据采集 Web App开发 iOS开发
如何利用 Python 的爬虫技术获取淘宝天猫商品的价格信息?
本文介绍了使用 Python 爬虫技术获取淘宝天猫商品价格信息的两种方法。方法一使用 Selenium 模拟浏览器操作,通过定位页面元素获取价格;方法二使用 Requests 和正则表达式直接请求页面内容并提取价格。每种方法都有详细步骤和代码示例,但需注意反爬措施和法律法规。
|
3天前
|
数据采集 存储 Web App开发
利用Python 的爬虫技术淘宝天猫销量和库存
使用 Python 爬虫技术获取淘宝天猫商品销量和库存的步骤包括:1. 安装 Python 和相关库(如 selenium、pandas),下载浏览器驱动;2. 使用 selenium 登录淘宝或天猫;3. 访问商品页面,分析网页结构,提取销量和库存信息;4. 处理和存储数据。注意网页结构可能变化,需遵守法律法规。
|
4天前
|
数据库 开发者 Python
“Python异步编程革命:如何从编程新手蜕变为并发大师,掌握未来技术的制胜法宝”
【10月更文挑战第25天】介绍了Python异步编程的基础和高级技巧。文章从同步与异步编程的区别入手,逐步讲解了如何使用`asyncio`库和`async`/`await`关键字进行异步编程。通过对比传统多线程,展示了异步编程在I/O密集型任务中的优势,并提供了最佳实践建议。
10 1
|
5天前
|
测试技术 开发者 Python
深入浅出:Python中的装饰器解析与应用###
【10月更文挑战第22天】 本文将带你走进Python装饰器的世界,揭示其背后的魔法。我们将一起探索装饰器的定义、工作原理、常见用法以及如何自定义装饰器,让你的代码更加简洁高效。无论你是Python新手还是有一定经验的开发者,相信这篇文章都能为你带来新的启发和收获。 ###
8 1
|
7天前
|
机器学习/深度学习 分布式计算 数据可视化
Python在数据科学中的应用与挑战
本文探讨了Python编程语言在数据科学领域的广泛应用及其面临的主要挑战。Python因其简洁的语法、强大的库支持和活跃的社区,已成为数据科学家的首选工具。然而,随着数据量的激增和复杂性的增加,Python也面临着性能瓶颈、内存管理等问题。本文将通过具体案例分析,展示Python在数据处理、分析和可视化方面的优势,同时讨论如何克服其在大规模数据处理中的局限性,为读者提供实用的解决方案和优化建议。