Win7 + VS2010 + Python2.7.5 安装 gevent

昨天折腾了下gevent,作个简单的记录。具体环境本文标题已经说得很明白了, win7是32位的 python

1. 下载gevent安装包 fetch

去gevent官网下载个source包, 地址是这里 http://pypi.python.org/packages/source/g/gevent/ ui

我下载到的是 gevent-0.13.8.tar.gz,解压 spa

2. 安装 code

假设解压到A目录下,则cmd命令窗口 cd 到该目录下,运行里面的fetch_libevent.py文件 get

python fetch_libevent.py   cmd

执行这个py文件,得到libevent的源码包,接下来是编译,运行里面的setup.py文件 源码

python setup.py build  it

若是是我这种环境,这里会出错(安装了VS2008应该没有问题),是VS版本的问题,要手动改下编译设置。 io

(个人Python安装在C盘根目录下面,因此)更改C:\Python27\Lib\distutils\msvc9compiler.py文件中的参数设置:

if not productdir or not os.path.isdir(productdir):
        toolskey = "VS100COMNTOOLS"#"VS%0.f0COMNTOOLS" % version
        toolsdir = os.environ.get(toolskey, None)

直接写死toolskey = "VS100COMNTOOLS",后面我注释掉的是原来的默认代码。

此时在执行构建libevent的命令

python setup.py build 

此时可以开始编译了,可是编译会报错:

libevent-src\http.c(145) : error C2011: 'addrinfo' : 'struct' type redefinition

这是由于,VS2010自带的库中已经定义了addrinfo这个结构体,因此,改掉libevent-src\http.c里面的这个结构体的名字,就能编译了(这个结构体随便改为其余名字就能够了),我改为了addrinfo1:

struct addrinfo1 {
	int ai_family;
	int ai_socktype;
	int ai_protocol;
	size_t ai_addrlen;
	struct sockaddr *ai_addr;
	struct addrinfo *ai_next;
};
而后再构建,就应该OK了

构建完成以后,安装便可,安装命令:

python setup.py install

安装完成以后能够经过python的help()查看模块,里面应该就有gevent了

相关文章
相关标签/搜索