Chinaunix首页 | 论坛 | 博客
  • 博客访问: 536340
  • 博文数量: 142
  • 博客积分: 2966
  • 博客等级: 少校
  • 技术积分: 1477
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-07 22:37
文章分类

全部博文(142)

文章存档

2013年(3)

2012年(21)

2011年(53)

2010年(33)

2009年(32)

分类: Python/Ruby

2012-04-18 13:32:11

在部署Python程序的时候。一般是把所有的源代码复制到目标机器上。我发现一个更好的办法是把源代码打包成.zip文件,然后直接运行这个.zip文件。比如:

python besteam.zip

它的秘密是在.zip文件中包含一个__main__.py,当python运行这个zip时,会自动找到它并运行。__main__.py的内容一般是调用主脚本。一行即可,比如:

import besteam

如果不想让源代码发布出去,这更是一个好办法。不需要手动地找出编译后的python字节码文件。python提供了一个zipfile.PyZipFile的类自动地将源代码编译成字节码并打包在一起。下面是一个简单的示例脚本:

点击(此处)折叠或打开

  1. # -*- coding:utf-8 -*-
  2. import zipfile, os
  3. besteamzip=zipfile.PyZipFile("besteam.zip" ,"w", zipfile.ZIP_DEFLATED)
  4. for filename in ("__main__.py", "besteam.py"):
  5.     besteamzip.writepy(filename)
  6. for dirname in os.listdir("."):
  7.     initfile=os.path.join(dirname, "__init__.py")
  8.     if os.path.isdir(dirname) and os.path.exists(initfile):
  9.         besteamzip.writepy(dirname)
  10. besteamzip.close()

需要注意的是,Python各个版本的字节码是不兼容的。所以,如果运行环境中有多个版本的Python就不能这么搞了,要么制作多个包,要么发布源代码。

阅读(4101) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~