在Sublime Text 2中安装Package Control时出现ImportError

4 投票
1 回答
7404 浏览
提问于 2025-04-30 05:45

我尝试在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没有。 我检查了一下Sublime使用的是哪个版本的Python,发现是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)]

有什么想法吗?

暂无标签

1 个回答

5

问题在于你正在使用Python 3,但你却在按照Python 2的说明来操作。

这两种语言之间有很多不同之处,其中一个就是Python 3把urllib2和一些相关模块重新整理到了urllib这个包里。特别是,urlopen函数和ProxyHandler类现在都在urllib.request里,而不是在urlopen里。

不过,你最好还是找一些Python 3的说明,而不是试图把Python 2的说明改得能用。

特别是,如果没有Python 3的说明,那很有可能这个程序根本不支持Python 3,结果只会在你的site-packages或者Sublime插件里留下些没用的垃圾。

更何况,通常如果你在Sublime Text中使用Python 3,你实际上是在使用Sublime Text 3 beta版本,这个版本和Sublime Text 2也有一些不同之处。

撰写回答