赖勇浩(http://laiyonghao.com)

关键字:python, easy_install, setuptools, Bitvise Tunnelier, polipo, windows, linux, socks5, http, proxy

在这里,我们有些网站无法访问。其中对我影响比较大的一个就是安装某些 Python 模块的时候,easy_install 无法访问到网站。在这里分享让 easy_install 使用代理的方法,如果你拥有 socks5 或 http 代理服务器可用,这个方法能够让 easy_install 完美地跨越长城。

http

首先介绍容易实现的 http 方式。得益于 python 模块 urllib 能够透明使用代理,easy_install 使用 http 代理是非常方式的。无论在 windows 还 linux 下,只要设置好 http_proxy 环境变量就可以了。
你可以在 windows 命令行执行:

[html] view plaincopyprint?

  1. setHTTP_PROXY=http://your.proxy.com:yourPort

或在 linux 下执行:

[html] view plaincopyprint?

  1. exportHTTP_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 文件,找到下面两行:

[html] view plaincopyprint?

  1. #socksParentProxy="localhost:9050"
  2. #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)。今天发的是修正版,删除了敏…感…信息,并修正了一些错误或过时的信息。

发表回复