OSX安裝gevent
her0kings1ey
最近在OSX下嘗試安裝運(yùn)行g(shù)event的examples中間遇到了十分多的麻煩,在這里記錄一下安裝運(yùn)行的過程女淑,省得自己以后忘記。
概要
以下是在OSX下安裝gevent的概要嫩海,方便各位(主要是以后的自己)迅速完成安裝早抠。
- 安裝libevent環(huán)境(可以通過brew install libevent) 的方式把libevent的環(huán)境安裝到/usr/local/下
- 不要使用系統(tǒng)自帶的python進(jìn)行pip install!1稀赡茸!
- 使用pyenv在/usr/local/下安裝python(pyenv install 2.7.11,如果遇到Build failed: "ERROR: The Python zlib extension was not compiled. Missing the zlib?"這個(gè)報(bào)錯(cuò)祝闻,需要執(zhí)行xcode-select --install命令 占卧。安裝完畢后使用pyenv global 2.7.11命令切換python版本)
- 使用pip install greenlet安裝greenlet
- 使用pip install gevent完成gevent安裝
這樣就完成了gevent的安裝,隨便運(yùn)行examples目錄下的一個(gè)例子(如:echoserver.py)驗(yàn)證联喘。
gevent簡介
gevent is a coroutine -based Python networking library that uses greenlet to provide a high-level synchronous API on top of the libev event loop.
Features include:
· Fast event loop based on libev (epoll on Linux, kqueue on FreeBSD).
· Lightweight execution units based on greenlet.
· API that re-uses concepts from the Python standard library (for example there aregevent.event.Events and gevent.queue.Queues).
· Cooperative sockets with SSL support
· DNS queries performed through threadpool or c-ares.
· Monkey patching utility to get 3rd party modules to become cooperative
gevent是一個(gè)基于協(xié)程的python網(wǎng)絡(luò)庫华蜒,它通過greenlet來提供一個(gè)底層為libev的事件循環(huán)的高層的同步API借口。
它包含以下特性:
- 基于libev的高效事件循環(huán)器(linux下基于epoll豁遭,F(xiàn)reeBSD基于kqueue)
- 基于greenlet的輕量級(jí)執(zhí)行單元
- API重用了python標(biāo)準(zhǔn)庫的概念(如:gevent.event.Events 和gevent.queue.Queues)
- socket對(duì)SSL的支持
- 通過線程池來執(zhí)行DNS查詢
- 通過monkey patching的方式來引入第三方模塊叭喜。
以上是來自于gevent官方網(wǎng)站的簡介。通過gevent我們能在python下進(jìn)行網(wǎng)絡(luò)編程蓖谢。
gevent的安裝
通過brew install安裝libevent捂蕴。
brew是一個(gè)OSX安裝軟件的利器。它會(huì)安裝到homebrew自己的目錄并且在/usr/local/下建立軟鏈蜈抓。
安裝pyenv(brew install pyenv)启绰,然后通過pyenv install 2.7.11的方法安裝python
在同一主機(jī)上擁有多個(gè)python版本,并能進(jìn)行簡單切換沟使。(在/usr/local/下)
pip安裝cython
cython是c在python下的一個(gè)擴(kuò)展委可,能通過python調(diào)用native方法。
pip安裝greenlet
python的一個(gè)協(xié)程庫腊嗡。
pip安裝gevent
最后着倾,后面會(huì)繼續(xù)基于gevent進(jìn)行網(wǎng)絡(luò)編程的學(xué)習(xí)。
Reference
- mac 下安裝gevent
https://www.phodal.com/blog/mac-os-x-10-9-install-gevent-greenlet/ - pyenv issue(常見構(gòu)建問題)
https://github.com/yyuu/pyenv/wiki/Common-build-problems - 10.10以前的版本安裝gevent的一種方法
http://guoqiao.me/post/2015/0102-pip-sudofree-on-mac-os-x