有没有使用ez_setup.py时使用代理服务器在企业网络中安装Python的easy_install的一种方式? 目前,我收到一个连接超时:
Downloading http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg
Traceback (most recent call last):
File "C:\jsears\python\ez_setup.py", line 278, in <module>
main(sys.argv[1:])
File "C:\jsears\python\ez_setup.py", line 210, in main
egg = download_setuptools(version, delay=0)
File "C:\jsears\python\ez_setup.py", line 158, in download_setuptools
src = urllib2.urlopen(url)
File "C:\jsears\Python27\lib\urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "C:\jsears\Python27\lib\urllib2.py", line 400, in open
response = self._open(req, data)
File "C:\jsears\Python27\lib\urllib2.py", line 418, in _open
'_open', req)
File "C:\jsears\Python27\lib\urllib2.py", line 378, in _call_chain
result = func(*args)
File "C:\jsears\Python27\lib\urllib2.py", line 1207, in http_open
return self.do_open(httplib.HTTPConnection, req)
File "C:\jsears\Python27\lib\urllib2.py", line 1177, in do_open
raise URLError(err)
urllib2.URLError: <urlopen error [Errno 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond>
Answer 1:
在Windows 7中,PowerShell的,上面的代理设置被忽略,该工具将无法正常工作。 但我找到了解决办法。
我加修饰的日常download_file_powershell
[System.Net.WebRequest]::DefaultWebProxy.Credentials = [System.Net.CredentialCache]::DefaultCredentials;
在小脚本内使用通过WebClient类下载。 下面是完整的download_file_powershell函数现在:
def download_file_powershell(url, target):
"""
Download the file at url to target using Powershell (which will validate
trust). Raise an exception if the command cannot complete.
"""
target = os.path.abspath(target)
cmd = [
'powershell',
'-Command',
"[System.Net.WebRequest]::DefaultWebProxy.Credentials = [System.Net.CredentialCache]::DefaultCredentials; (new-object System.Net.WebClient).DownloadFile(%(url)r, %(target)r)" % vars(),
]
subprocess.check_call(cmd)
Answer 2:
如果你已经有了一个HTTP_PROXY / https_proxy环境变量设置,你可以告诉ez_setup.py不使用PowerShell。 PowerShell不使用HTTP_PROXY / HTTPS_PROXY环境变量。 按照这个响应的第一部分。
谁的人可能不知道如何设置环境变量,见第2+。
使用PowerShell的停止ez_setup.py
进入ez_install.py并找到以下部分:
def has_powershell():
if platform.system() != 'Windows':
return False
cmd = ['powershell', '-Command', 'echo test']
devnull = open(os.path.devnull, 'wb')
try:
try:
subprocess.check_call(cmd, stdout=devnull, stderr=devnull)
except:
return False
finally:
devnull.close()
return True
并改变它是
def has_powershell():
return False
ez_install.py将使用环境HTTP_PROXY / HTTPS_PROXY其可以在命令行或通过控制面板来设定。
临时命令行:
set HTTP_PROXY=http://proxy.example.com
set HTTPS_PROXY=https://proxy.example.com
注意:如果你这样做,你必须在你运行这些命令相同的命令窗口中运行“蟒蛇ez_setup.py”。
永久命令行(仅用户):
setx HTTP_PROXY "http://proxy.example.com"
setx HTTPS_PROXY "https://proxy.example.com"
永久命令行(又名机所有用户):
setx HTTP_PROXY "http://proxy.example.com" /M
setx HTTPS_PROXY "https://proxy.example.com" /M
通过控制面板永久:
- 开始 - >控制面板 - >用户帐户
- 在左侧面板中,点击“更改我的环境变量”
- 在“用户变量”或“系统变量”,点击“新建...”(这取决于你想要什么)
- 设置变量名:HTTP_PROXY和变量值:HTTP:/proxy.example.com
- 在“用户变量”或“系统变量”,点击“新建...”(这取决于你想要什么)
- 设置变量名:HTTPS_PROXY和变量值:HTTPS:/proxy.example.com
- 点击“确定”
Answer 3:
显然,你可以简单地设置环境变量:
出口HTTP_PROXY = HTTP:// <用户>:<密码> @ <proxy_host_name>:<端口>
例如:
出口HTTP_PROXY = HTTP://管理员:password@proxy.example.com:80
Answer 4:
您还可以设置在你的代码:
import urllib2
proxy = urllib2.ProxyHandler({'http':'http://username:password@proxy_host:port'})
auth = urllib2.HTTPBasicAuthHandler()
opener = urllib2.build_opener(proxy, auth, urllib2.HTTPHandler)
urllib2.install_opener(opener)
Answer 5:
我只是碰到了同样的问题,这是我找到了解决办法。 我承认是不理想的,但它只是我发现解决此问题在Windows的方式。
- 下载。 ez_setup.py。
- 编辑以下行来告诉你该文件预计到压缩了包下载到:
打印saveto
def download_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL,
to_dir=os.curdir, delay=15,
downloader_factory=get_best_downloader):
# making sure we use the absolute path
to_dir = os.path.abspath(to_dir)
tgz_name = "setuptools-%s.tar.gz" % version
url = download_base + tgz_name
saveto = os.path.join(to_dir, tgz_name)
print saveto
if not os.path.exists(saveto): # Avoid repeated downloads
log.warn("Downloading %s", url)
downloader = downloader_factory()
downloader(url, saveto)
return os.path.realpath(saveto)
这提供了以下输出,当你在我的情况下执行该脚本:“C:\ Python27> python.exe ez_setup.py”
输出:
C:\ Python27 \ setuptools的-1.4.2.tar.gz下载https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz异常调用“DownloadFile”与“2 “参数(一个或多个):‘的远程服务器返回错误:(407)代理身份验证’ 在行:1字符:47 +(新物体System.Net.WebClient).DownloadFile <<<<(” https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2。 tar.gz的 ”, 'C:\ Python27 \ setuptools的-1.4.2.tar.gz')+ CategoryInfo:NotSpecified:(:) [],MethodInvocationException + FullyQualifiedErrorId:DotNetMethodException
- 从上面的HTTPS链接下载包,并把它的位置,它预计在我的情况“C:\ Python27 \”
被放置在位置该文件触发此逻辑语句:
if not os.path.exists(saveto): # Avoid repeated downloads
log.warn("Downloading %s", url)
downloader = downloader_factory()
downloader(url, saveto)
return os.path.realpath(saveto)
仿佛被施了魔法,包将被安装。
文章来源: Installing Python's easy_install using ez_setup.py from behind a proxy server