4

我尝试在 Sublime Text 2 中安装 Package Control。我从官方网站将以下安装代码输入到控制台中:

import urllib2,os,hashlib; 
h = '7183a2d3e96f11eeadd761d777e62404' + 'e330c659d4bb41d3bdf022e94cab3cd0'; 
pf = 'Package Control.sublime-package'; 
ipp = sublime.installed_packages_path(); 
os.makedirs( ipp ) if not os.path.exists(ipp) else None; 
urllib2.install_opener( urllib2.build_opener( urllib2.ProxyHandler()) ); 
by = urllib2.urlopen( 'http://sublime.wbond.net/' + pf.replace(' ', '%20')).read(); 
dh = hashlib.sha256(by).hexdigest(); 
open( os.path.join( ipp, pf), 'wb' ).write(by) if dh == h else None; 
print('Error validating download (got %s instead of %s), please try manual install' % (dh, h) if dh != h else 'Please restart Sublime Text to finish installation')`

但是,我得到的唯一结果是:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named 'urllib2'

我不明白为什么urllib2不在那里。我检查了使用哪个版本的 Python Sublime,它是 3.3.3。

>>> import sys
>>> print(sys.version)
3.3.3 (default, Dec 19 2013, 14:22:24) 
[GCC 4.2.1 Compatible Apple LLVM 4.2 (clang-425.0.24)]

有任何想法吗?

4

1 回答 1

5

问题是您使用的是 Python 3,并且您正在按照 Python 2 的说明进行操作。

两种语言之间的许多差异之一是 Python 3 重新组织urllib2了并将一堆相关模块放入urllib包中。特别是,urlopen函数、ProxyHandler类等现在都在urllib.request而不是urlopen.

但是,您可能会更好地寻找 Python 3 指令,而不是尝试破解 Python 2 指令来工作。

特别是因为,如果没有任何 Python 3 指令,则程序很可能无法与 Python 3 一起使用,并且最终会在您的站点包或 Sublime 插件或其他东西中留下不可用的垃圾。

更是如此,因为通常如果你使用带有 Sublime Text 的 Python 3,你实际上是在使用 Sublime Text 3 beta,它与 Sublime Text 2 相比有一些自己的变化。

于 2014-10-28T19:34:54.630 回答