我本身安装有setupTool,一般来说,命令行下执行easy_install simplejson或者ez_setup simplejson就可以自动搜索相应的egg下来并安装完成。没想到这回还报错了。

       出错信息如下:

E:\Python25\work\obited>easy_install simplejson
Searching for simplejson
Reading http://pypi.python.org/simple/simplejson/
Reading http://undefined.org/python/#simplejson
Best match: simplejson 1.8.1
Downloading http://pypi.python.org/packages/source/s/simplejson/simplejson-1.8.1
.tar.gz#md5=7d024d6ae74abb269637be204e132bdc
Processing simplejson-1.8.1.tar.gz
Running simplejson-1.8.1\setup.py -q bdist_egg --dist-dir c:\docume~1\yobin\loca
ls~1\temp\easy_install-hvn4-k\simplejson-1.8.1\egg-dist-tmp-ikjaes
_speedups.c
simplejson\_speedups.c(610) : error C2059: 语法错误 : “}”
**********************************************************************
WARNING: The C extension could not be compiled, speedups are not enabled.

Below is the output showing how the compilation failed:

command '"C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin\cl.exe"' fa
iled with exit status 2
**********************************************************************
error: Setup script exited with error: can't copy 'simplejson.egg-info\native_libs.txt': doesn't exist or not a regular file

    执行了几遍,依然如故。到pypi那里下载了源码包,解压安装,还是如故。不知所以然,习惯性Google了一下,发现很多人有这样的错误。其中有几个老外讨论得还比较详细,不过似乎是解决了一个问题又产生了别的问题http://groups.google.com.au/group/comp.lang.python/browse_thread/thread/c3b467b14e32097f/d1cb6036b521a252

      突然,想起了自己除了会点三脚猫的python之外,自己好歹也还是个熟悉C语言的人。看了报错信息之后,找到那个_speedups.c文件的610行,定睛一看,源码中是这么写的:

#define DEFN(n, k) \
    { \
        #n, \
        (PyCFunction)py_ ##n, \
        k, \
        pydoc_ ##n \
    }

static PyMethodDef speedups_methods[] = {
    DEFN(encode_basestring_ascii, METH_O),
    DEFN(scanstring, METH_VARARGS),
    {}//这里就是第610行
};

难怪出错,前面两个是宏定义,展开是对的,但是第610行这样写就不合适了。没有找以前版本的来对照,我猜是作者写了一些测试的代码在这里,但发布时去掉了。

问题的解决:
索性屏蔽掉第610行,然后命令行下 setup.py build,直接编译源码,就OK了。
希望那些遇到这个问题的人们能看到这里,老外也能看懂中文就好了,阿门。

下面是正确的安装显示,不知道编译C时会找到我的.Net 2003,可能是PATH顺序的问题。
E:\Python25\work\obited\simplejson-1.8.1>setup.py build
running build
running build_py
running build_ext
building 'simplejson._speedups' extension
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin\cl.exe /c /nologo /Ox
/MD /W3 /GX /DNDEBUG -IE:\Python25\include -IE:\Python25\PC /Tcsimplejson/_spee
dups.c /Fobuild\temp.win32-2.5\Release\simplejson/_speedups.obj
_speedups.c
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin\link.exe /DLL /nologo
/INCREMENTAL:NO /LIBPATH:E:\Python25\libs /LIBPATH:E:\Python25\PCBuild /EXPORT:
init_speedups build\temp.win32-2.5\Release\simplejson/_speedups.obj /OUT:build\l
ib.win32-2.5\simplejson\_speedups.pyd /IMPLIB:build\temp.win32-2.5\Release\simpl
ejson\_speedups.lib
   正在创建库 build\temp.win32-2.5\Release\simplejson\_speedups.lib 和对象 build
\temp.win32-2.5\Release\simplejson\_speedups.exp