为什么在OS X上升级Python后出现ImportError: No module named pkg_resources?

83 投票
10 回答
174990 浏览
提问于 2025-04-15 16:08

我刚在我的Mac上更新了Python到2.6.4版本。
我是通过dmg包安装的。

安装后,似乎没有正确设置我的Python路径,所以我在.bash_profile文件中添加了'/usr/local/lib/python2.6/site-packages'

>>> pprint.pprint(sys.path)  
['',
'/Users/Bryan/work/django-trunk', 
'/usr/local/lib/python2.6/site-packages',  
'/Library/Frameworks/Python.framework/Versions/2.6/lib/python26.zip',  
'/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6',  
'/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-darwin',  
'/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac',  
'/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac/lib-scriptpackages',  
'/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-tk',  
'/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-old',  
'/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload',  
'/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages']

显然,这并不是所有需要的路径,因为我无法运行iPython。

$ ipython  
Traceback (most recent call last):  
  File "/usr/local/bin/ipython", line 5, in <module>  
  from pkg_resources import load_entry_point  
ImportError: No module named `pkg_resources`

我在谷歌上搜索过,但还是搞不清楚怎么安装pkg_resources或者确保它在路径上。

我需要做些什么来解决这个问题呢?

10 个回答

7

如果你在Mac OS 10.7上升级了Python,但发现pkg_resources不工作,最简单的解决办法就是重新安装setuptools,就像Ned上面提到的那样。

sudo pip install setuptools --upgrade
or sudo easy_install install setuptools --upgrade
76

我遇到了同样的ImportError错误。我的Python环境中不知怎么就把setuptools这个包删掉了。

要解决这个问题,可以运行setuptools的安装脚本:

curl https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py | python

如果你有任何版本的distribute,或者任何setuptools版本低于0.6,你需要先把它卸载掉。

想了解更多细节,可以查看安装说明


* 如果你已经有一个能正常工作的distribute,把它升级到一个“兼容包装器”会更简单,这样就能切换到setuptools了。不过如果现在已经出问题了,就别尝试这样做。

74

[更新] 简单来说,pkg_resources 是由 Distributesetuptools 提供的。

[更新 2] 在2013年的PyCon大会上宣布,Distributesetuptools 项目已经重新合并。现在 Distribute 已经不再使用,你应该直接使用最新的 setuptools。可以试试这个:

curl -O https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
python ez_setup.py

或者,更好的是,使用当前的 pip,它是一个高级接口,底层会使用 setuptools

[针对提问者具体问题的详细回答]:

你在问题中没有说明,但我假设你是从苹果自带的Python(10.5上的2.5或10.6上的2.6.1)升级过来的,或者是从python.org的Python 2.5升级的。在这些情况下,重要的一点是每个Python实例都有自己的库,包括自己的site-packages库,这里是安装额外包的地方。(顺便说一下,它们默认都不使用 /usr/local/lib。)这意味着你需要为新的Python 2.6安装所需的额外包。最简单的方法是先确保新的python2.6在你的搜索 $PATH 中排在最前面(也就是说,输入 python2.6 时能正常调用它);python2.6的安装程序应该已经修改了你的 .bash_profile,把它的框架bin目录放在了 $PATH 的最前面。然后按照那里的说明使用 setuptools 安装 easy_install。这个步骤也会自动安装 pkg_resources 模块。

接着,使用新安装的 easy_install(或 pip)来安装 ipython

easy_install ipython

或者

pip install ipython

它应该会自动安装到该Python实例的正确 site-packages 位置,这样你就可以正常使用了。

撰写回答