2016-10-04 124 views
0

我更新了downloader.py中的DEFAULT_URL,并且仍然收到以下错误。我最初尝试只是nltk.downloader()和文件浏览器更新,但当我试图下载,它仍然恢复到github网站。Python 3.5:NLTK下载默认URL不会改变

DEFAULT_URL = 'http://nltk.org/nltk_data/' 

import nltk 
nltk.set_proxy('proxyaddress',user=None) 
dl = nltk.downloader.Downloader("http://nltk.org/nltk_data/") 
dl.download('all') 

[nltk_data] Downloading collection 'all' 
[nltk_data] | 
[nltk_data] | Downloading package abc to C:\nltk_data... 
[nltk_data] | Error downloading 'abc' from 
[nltk_data] |  <https://raw.githubusercontent.com/nltk/nltk_data 
[nltk_data] |  /gh-pages/packages/corpora/abc.zip>: <urlopen 
[nltk_data] |  error [Errno 11004] getaddrinfo failed> 

为什么这仍然默认为raw.githubusercontent.com/nltk/nltk_data?

+0

没有必要重新定义'DEFAULT_URL'。当您使用自己的网址初始化Downloader时,它会被忽略,就像您一样。无论如何,我无法重现您的问题:它对我的预期效果。您的代理可能导致问题吗? – alexis

+0

@alexis这是我的代理。当我离开我的办公室时,我再次尝试,它工作正常。我在很多其他情况下使用了相同的代理,因此如果“set_proxy”函数工作不正常,我现在很好奇。 – njfrazie

+0

'set_proxy'只是调用'urllib.request.build_opener'和'install_opener',它修改了URL的处理。问题必须来自您的代理。 – alexis

回答

1

问题来自您的代理。我不能说有什么不对您的代理配置,但初始化一个自定义下载网址下载按预期工作(有没有需要修改NLTK源nltk/downloader.py):

dl = nltk.downloader.Downloader("http://example.com/my_corpus_data/index.xml") 

注意,自定义网址必须按照nltk预期的格式解析为描述可下载资源的XML文档;您问题中的代码指向http://nltk.org/nltk_data处的人类可读列表,这只会导致错误。 (推测你的真实代码使用不同的URL,并且代理设置周围有不同的代码。)

无论如何,问题必须出现在您的代理中,或者您使用它的方式。 nltk的set_proxy函数只需调用urllib.request中的几个函数来声明代理。它永远不会靠近nltk的downloader模块,所以它不可能影响下载器的默认值。

+0

我同意这是我的代理,因为一旦我离开了它的工作环境。然而,我很困惑R,CPAN客户端,pip和其他一些工具如何使用相同的代理地址:端口。 – njfrazie