python打包:
因为有需要将python程序的代码进行打包,网上资料较少。
找到几款工具,cx_freeze可以参考:http://www.haogongju.net/art/1192978
py2exe可以参考:http://www.cnblogs.com/jogger/archive/2012/06/26/2563806.html
关于setup的描述参见:http://www.itkee.com/developer/detail-17f8.html
python脚本打包:http://www.cnblogs.com/sinojelly/archive/2010/02/23/1672283.html
我试验了一下cvfreeze,是可以做成exe,换windows机器也是可以运行的,但是并不完美,需要继续研究,这里简单记录一些东西。
1.根据python版本下载安装
下载地址:http://sourceforge.net/projects/cx-freeze/files/
根据机器及系统类型下载对应文件并安装。
安装之后记得修改C:\python27\Scripts\cxfreeze.bat文件:
@echo off
C:\python27\python.exe C:\python27\Scripts\cxfreeze %*
否则总会出现“系统找不到指定路径”的问题。
正确安装之后 cxfreeze hello.py --target-dir dist 即可生成对应的exe文件,而文件同dll一起copy放到别的机器上是可以正确运行的。
但是这里也是有缺点的,只能对单个文件进行打包,多文件打包的还在摸索中。后续补充。
------------------------------------------------------------------------------------------------------------------------
附上setup的一份文档:
------------------------------------------------
以下内容转自:http://hi.baidu.com/jiyeqian/item/cdce1b0e7eb72294a3df43d9
Python模块的安装方法:
1. 单文件模块:直接把文件拷贝到$python_dir/lib
2.
多文件模块,带setup.py:python setup.py install
3.
egg文件,类似Java的jar:
1) 下载ez_setup.py,运行python ez_setup
2) easy_install
*.egg
虽然Python的模块可以拷贝安装,但是一般情况下推荐制作一个安装包,即写一个setup.py文件来安装。
setup.py文件的使用:
%
python setup.py build #编译
% python setup.py install #安装
% python
setup.py sdist #制作分发包
% python setup.py bdist_wininst
#制作windows下的分发包
% python setup.py
bdist_rpm
setup.py文件的编写:
setup.py中主要执行一个
setup函数,该函数中大部分是描述性东西,最主要的是packages参数,列出所有的package,可以用自带的find_packages来动态获取package。所以setup.py文件的编写实际是很简单的。
简单的例子:
setup.py文件:
from
setuptools import setup, find_packages
setup(
name="mytest",
version="0.10",
description="My test
module",
author="Robin Hood",
url="http://www.csdn.net",
license="LGPL",
packages=
find_packages(),
scripts=["scripts/test.py"],
)
mytest.py文件:
import sys
def get():
return
sys.path
scripts/test.py文件:
import os
print
os.environ.keys()
setup中的scripts表示将该文件放到
Python的Scripts目录下,可以直接用。OK,简单的安装成功,可以运行所列举的命令生成安装包,或者安装该python包。
本机测试成功(win32-python25)!
转自:
http://blog.csdn.net/foyuan/archive/2007/11/14/1883924.aspx
http://www.okpython.com/bbs/thread-3103-1-1.html