首先安装编译器,vs2008express sp1版本。这个版本使用的msvcrt是9.0.30729.1,不是微软下载站的最新版本。不过只有最后一个数字有区别。

1. 编译openssl

首先要安装activeperl。它似乎是用vc6编译的,或者用mingw编译的,并没有安装新的msvcrt。

解压openssl后,进入目录以后运行以下几条命令:

perl Configure VC-WIN32 no-asm --prefix=c:/openssl
ms\do_ms.bat
nmake -f ms\ntdll.mak
nmake -f ms\ntdll.mak install

一般网上会介绍用汇编的命令,需要运行`ms\do_nasm.bat`虽然会加快速度,但是我觉得太麻烦了。

四个命令运行完,在c:\openssl下就可以找到openssl的文件了。

2. 编译python。

python依赖于bzip2、sqlite3、openssl等几个库。bdb就不用说了,反正也没有用。openssl在前面已经编译好了。

把python解压到c:\goldfish\python\python-2.6.7,把sqlite3解压到sqlite-3.5.9,把bzip2

解压到bzip2-1.0.5,目录名里面的版本号都不是包真正的版本号,只是因为python依赖于特定的版本(只有目录名,不是真的非那个版本不

用)。

打开python目录里面的`PCBuild\pcbuild.sln`,这是一个做好的visual studio项目文件。打开的时候可能会提示一个express版本不支持solution items之类的警告,似乎没有关系。

在项目管理器里面删掉不需要的几个工程。比如:`_tkinter, _bsddb, _ctypes_test, _msi, _testcapi, w9xpopen, winsound`。

还需要修改`_ssl`和`hashlib`两个工程的属性。设置包含`c:\openssl\include`和`c:\openssl\lib`,分别在“c/c++属性”和“链接->输入”两个属性页里面。还要禁止预生成步骤。

把整个解决方案活动的配置改成“Release”,然后生成解决方案。

如果一切没有错误,在pcbuild目录下就可以找到一堆.pyd文件,一堆.lib文件和python26.dll, python.exe,

pythonw.exe,把它们复制到该去的地方。然后还要复制Lib目录里面的.py文件和include目录。这样的话,一个精简的python就搞

出来了。

到DLLs删除ls说的几个用不着的pyd,另外到Lib删除对应的py,以及几乎不会用到的2to3, compiler, test等。

一个相对完整的单文件版py2.7大概10m左右

--

记得2.5的时候,比JRE小很多,是我引为py的一个优点,可是最近下载2.7,已经超15MB了,而JRE 6却依然保持身材(捆绑插件不算)。这意味着啥?能减肥不?

按我贴的编译方法搞出来,只有7M.压缩后3.5M

记错了:是一个单文件的python + webpy + lxml + jinja2 + sqlalchemy做的一个简单的web是 10M左右 单文件的python是6M