賴勇浩(http://laiyonghao.com)
關鍵字:python, easy_install, setuptools, Bitvise Tunnelier, polipo, windows, linux, socks5, http, proxy
在這裡,我們有些網站無法訪問。其中對我影響比較大的一個就是安裝某些 Python 模組的時候,easy_install 無法訪問到網站。在這裡分享讓 easy_install 使用代理的方法,如果你擁有 socks5 或 http Proxy 伺服器可用,這個方法能夠讓 easy_install 完美地跨越長城。
http
首先介紹容易實現的 http 方式。得益於 python 模組 urllib 能夠透明使用代理,easy_install 使用 http 代理是非常方式的。無論在 windows 還 linux 下,只要設定好 http_proxy 環境變數就可以了。
你可以在 windows 命令列執行:
set HTTP_PROXY=http://your.proxy.com:yourPort
或在 linux 下執行:
export HTTP_PROXY="http://your.proxy.com:yourPort"
然後再執行 easy_install 即可。
socks5
如果你有 VPS,推薦在 windows 下使用 Bitvise Tunnelier,它能夠利用你的 VPS 提供 socks5 代理服務。可惜 easy_install 沒有辦法直接使用 socks5 代理,所以需要一個軟體來把 socks5 代理轉換為 http 代理。通過 twitter 上許多友好人士的提點,我選擇了 polipo 這個軟體來打造 http 代理。
polipo 使用非常簡單,在這裡(http://interloper.org/tmp/polipo/polipo-1.0.4.1-forbidden-1-win32.exe)下載到一個 windows 下的安裝檔案,一路 next 安裝即可,安裝後進入 polipo.exe 所在的安裝目錄,用記事本或其它編輯器(我使用 gvim)開啟 config 檔案,找到下面兩行:
# socksParentProxy = "localhost:9050"# socksProxyType = socks5
然後把前面的 # 去掉,把 9050 改成你的 socks5 伺服器的連接埠,我使用的是 Bitvise Tunnelier 預設的 1080,然後儲存關閉。
現在通過開始菜單運行 polipo,你應該可以看到 Established listening socket on port 8123 字樣,表示運行成功了。這時再通過上文的方法把 http://127.0.0.1:8123 設定為 http_proxy 環境變數,你的 easy_install 就可以使用代理了。
其它方案
自由的 linux 下有著更豐富的方式,polipo 本身是個跨平台軟體,也可以使用 @number5、@kynix 和 @kypudding 推薦的 tscoks 以及 ProxyChains,windows 下也還可以使用 SocksCap。而我採用的 polipo 方案來自 @BOYPT 的推薦,感謝所有人,也感謝國家,給我動力和機會去瞭解這些工具,我相信以後會在其它地方用得著這些“技術”。本解決方案得益於 Google 和 Twitter 兩個偉大的網站,在此一併感謝。
後記
這本來是 2010 年 4 月 16 日發表在本博的文章,因為之前的版本有太多敏…感…詞,所以被 CSDN Blog 刪掉了,幸好有熱心有大房(@dafang)當時轉載到他的部落格(http://dafang.sinaapp.com/?p=948)。今天發的是修正版,刪除了敏…感…資訊,並修正了一些錯誤或過時的資訊。