使用pip安装时出现属性错误

14

这是一个棘手的问题,所以在检查和阅读了有关此问题的所有先前帖子之后,我才发布此问题。

运行OSX 10.9 Python 2.7,没有虚拟环境。

pip install awssh

Downloading/unpacking awssh

  Downloading awssh-0.1.tar.gz
Cleaning up...

Exception:
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/pip-1.5.2-py2.7.egg/pip/basecommand.py", 

line 122, in main
    status = self.run(options, args)
  File "/Library/Python/2.7/site-packages/pip-1.5.2-py2.7.egg/pip/commands/install.py", 

line 274, in run
    requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
  File "/Library/Python/2.7/site-packages/pip-1.5.2-py2.7.egg/pip/req.py", 

line 1215, in prepare_files
    req_to_install.run_egg_info()
  File "/Library/Python/2.7/site-packages/pip-1.5.2-py2.7.egg/pip/req.py", 

line 288, in run_egg_info
    logger.notify('Running setup.py (path:%s) egg_info for package %s' % (self.setup_py, self.name))
  File "/Library/Python/2.7/site-packages/pip-1.5.2-py2.7.egg/pip/req.py", 

line 265, in setup_py
    import setuptools
  File "/Library/Python/2.7/site-packages/setuptools/__init__.py", line 11, in <module>

    from setuptools.extension import Extension
  File "/Library/Python/2.7/site-packages/setuptools/extension.py", line 8, in <module>

 File "/Library/Python/2.7/site-packages/setuptools/dist.py", line 21, in <module>
    packaging = pkg_resources.packaging

AttributeError: 'module' object has no attribute 'packaging'

糟糕,我刚刚意识到我的笔记本电脑上安装了旧版本的apt-get的setuptools和pip。我卸载了它们,但使用setuptools 14.3仍然出现错误。实际上,这个错误是在导入setuptools时引发的。 - abcd
setuptools 16.0相同 - abcd
1个回答

22

这个错误是由于存在过时版本的 pkg_resources 导致的。为了消除错误,请按照以下步骤操作:

  1. 开始一个python会话,导入pkg_resources,并查看被加载的文件:

    In [1]: import pkg_resources
    
    In [2]: pkg_resources.__file__
    Out[2]: '/usr/lib/python2.7/dist-packages/pkg_resources.pyc'
    
  2. 删除此文件(以及相关的*.py文件):

    $ sudo rm /usr/lib/python2.7/dist-packages/pkg_resources.py*
    
  3. 就是这样!重新运行安装程序,应该会完成而不会出现任何错误:

  4. $ sudo pip install awssh
    

警告

如果你使用的是基于 Debian 的 Linux 系统,则此文件可能已通过 python-pkg-resources 软件包安装。因此,更新或重新安装该软件包将恢复陈旧的模块!同时,请注意,您正在处理一个应该由 apt 控制的文件。


解决了。不错的东西。 - Manu
1
@dbliss 当我导入 pkg_resources 时,它给了我以下路径:/usr/local/lib/python2.7/dist-packages/setuptools-5.7-py2.7.egg/pkg_resources.pyc 但是当我尝试删除它时,我收到了:rm: cannot remove ‘/usr/local/lib/python2.7/dist-packages/setuptools-5.7-py2.7.egg/pkg_resources.pyc’: Not a directory。有什么解决方法吗? - user4850448
@Dex 看起来你在错误地使用 rm 命令了,也许需要加上 -r 参数?你具体执行的命令是什么? - abcd
@dbliss 我遇到了同样的问题,因为 /usr/local/lib/python2.7/dist-packages/setuptools-5.7-py2.7.egg 是一个文件,而不是一个文件夹,看起来像这样:http://cl.ly/e9qM - Slipp D. Thompson
@Dex 我在我的机器上通过 sudo rm 删除了 setuptools-5.7-py2.7.egg,然后运行了 pip install setuptools 来解决这个问题。现在运行上面的命令会给我 /usr/local/lib/python2.7/site-packages/setuptools/__init__.pyc,并且 AttributeError 已经消失了。注意:我对 Python 一无所知,所以这可能是危险或不必要的,但对我来说有效。 - Slipp D. Thompson
我在卸载setuptools并重新安装后没问题了。 - Peter Smit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接