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了

相關文章
相關標籤/搜索