类型:Python,创建时间:Jan. 1, 2012, 7:02 p.m.
标题无“转载”即原创文章,版权所有。转载请注明来源:http://hgoldfish.com/blogs/article/76/。
在部署Python程序的时候。一般是把所有的源代码复制到目标机器上。我发现一个更好的办法是把源代码打包成.zip文件,然后直接运行这个.zip文件。比如:
python besteam.zip
它的秘密是在.zip文件中包含一个__main__.py
,当python运行这个zip时,会自动找到它并运行。__main__.py
的内容一般是调用主脚本。一行即可,比如:
import besteam
如果不想让源代码发布出去,这更是一个好办法。不需要手动地找出编译后的python字节码文件。python提供了一个zipfile.PyZipFile
的类自动地将源代码编译成字节码并打包在一起。下面是一个简单的示例脚本:
# -*- coding:utf-8 -*- # build.py import zipfile, os besteamzip=zipfile.PyZipFile("besteam.zip" ,"w", zipfile.ZIP_DEFLATED) #跳过一些开发用的.py脚本 for filename in ("__main__.py", "besteam.py"): besteamzip.writepy(filename) for dirname in os.listdir("."): initfile=os.path.join(dirname, "__init__.py") if os.path.isdir(dirname) and os.path.exists(initfile): besteamzip.writepy(dirname) besteamzip.close()
需要注意的是,Python各个版本的字节码是不兼容的。所以,如果运行环境中有多个版本的Python就不能这么搞了,要么制作多个包,要么发布源代码。
标题无“转载”即原创文章,版权所有。转载请注明来源:http://hgoldfish.com/blogs/article/76/。
geek42(Oct. 21, 2013, 2:49 p.m.)
看了py26和py3k的cpython vm 字节码是一样的啊
老鱼(Nov. 5, 2013, 10:49 a.m.)
.pyc
文件的头部有个magic number,版本不一样的Python产生不同的magic number。