【问题标题】:What is causing ImportError: No module named pkg_resources after upgrade of Python on os X?是什么导致 ImportError:在 OS X 上升级 Python 后没有名为 pkg_resources 的模块?
【发布时间】:2010-12-17 22:08:05
【问题描述】:

我刚刚在我的 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`

我已经完成了 Google 搜索,但我真的不知道如何安装 pkg_resources 或确保它在路径上。

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

【问题讨论】:

    标签: python ipython


    【解决方案1】:

    我遇到了同样的ImportError。我的 Python 环境中不知何故 setuptools 包已被删除。

    要解决此问题,请运行 setuptools 的设置脚本:

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

    如果你有distribute的任何版本,或者任何低于0.6的setuptools,你必须先卸载它。*

    更多详情请参阅Installation Instructions


    * 如果您已经有一个可用的distribute,将其升级到“兼容性包装器”将您切换到setuptools 会更容易。但如果事情已经坏了,不要尝试。

    【讨论】:

    • 这是正确的做法。如果没有 pkg​​_resources,easy_install 也可能无法工作(因此easy_installpip 将无法安装 setuptools)。
    • 安装 Distribute 或 setuptools 实际上是公认的答案所推荐的。我已经稍微更新了原始答案以使其更加明显。顺便说一句,在不先检查文件内容的情况下从不安全的 URL 下载和安装某些东西有点危险。
    【解决方案2】:

    [更新] TL;DR pkg_resourcesDistributesetuptools 提供。

    [更新 2] 正如在 PyCon 2013 上宣布的那样,Distributesetuptools 项目已重新合并。 Distribute 现在已弃用,您应该只使用新的当前setuptools。试试这个:

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

    或者,更好的是,使用当前的pip 作为高级接口,并在幕后使用setuptools

    [针对 OP 的具体问题的更长答案]:

    您没有在问题中说,但我假设您从 Apple 提供的 Python 升级(10.5 上的 2.5 或 10.6 上的 2.6.1)或者您从 python.org Python 2.5 升级。在任何这些情况下,重要的一点是每个 Python 实例都有自己的库,包括它自己的站点包库,这是安装附加包的地方。 (顺便说一句,它们都没有默认使用/usr/local/lib。)这意味着您需要安装新的python 2.6所需的那些附加包。最简单的方法是首先确保新的python2.6 出现在您的搜索$PATH 上(也就是说,键入python2.6 会按预期调用它); python2.6 安装程序应该已经修改了您的.bash_profile 以将其框架bin 目录放在$PATH 的前面。然后按照那里的说明使用setuptools 安装easy_installpkg_resources 模块也通过这一步自动安装。

    然后使用新安装的easy_install(或pip)版本安装ipython

    easy_install ipython
    

    pip install ipython
    

    它应该会自动安装到该 python 实例的正确 site-packages 位置,您应该一切顺利。

    【讨论】:

    • 昨晚我尝试安装 setuptools 时搞砸了。我忽略了通过运行 .egg 文件来完成安装,就好像它是一个 shell 文件一样。 $ sh setuptools-0.6c11-py2.6.egg 我猜是在某处添加了新的 Python 路径。
    • 注意:为我解决此问题的实际答案如下 - 请参阅 stackoverflow.com/a/10538341/293064
    • 我对这个旧答案进行了一些更新,以更清楚地表明解决方案是安装Distributesetuptools。具体步骤在链接中。 OP 的问题涉及其他项目。
    • 进一步的编辑以反映 distribute 的弃用以支持新的 setuptools 并提及 pip
    • 得到python ez_setup.py File "ez_setup.py", line 1 &lt;!DOCTYPE html&gt; ^ SyntaxError: invalid syntax :(
    【解决方案3】:

    如果在 mac os 10.7 上升级你的 python 并且 pkg_resources 不起作用,解决这个问题的最简单方法是重新安装上面提到的 Ned 的 setuptools。

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

    【讨论】:

      【解决方案4】:

      在我的系统 (OSX 10.6) 上,该软件包位于

      /System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py
      

      我希望这可以帮助您确定它是丢失还是不在您的路径上。

      【讨论】:

        【解决方案5】:

        原因可能是因为 IPython 模块不在您的 PYTHONPATH 中。

        如果您下载 IPython 然后执行 python setup.py 安装

        安装程序不会将模块 IPython 添加到您的 python 路径中。 您可能希望手动将其添加到您的 PYTHONPATH 中。完成后它应该可以工作:

        导出 PYTHONPATH=/pathtoIPython:$PYTHONPATH

        将此行添加到您的 .bashrc 或 .profile 中以使其永久化。

        【讨论】:

          【解决方案6】:

          我意识到这与 OSX 无关,但在嵌入式系统 (Beagle Bone Angstrom) 上,我收到了完全相同的错误消息。安装以下 ipk 包即可解决。

          opkg install python-setuptools
          opkg install python-pip
          

          【讨论】:

            【解决方案7】:

            我在 Ubuntu 上遇到此错误,以下对我有用:

            删除 Dropbox 二进制文件并再次下载它们,方法是运行:

            sudo rm -rf /var/lib/dropbox/.dropbox-dist
            dropbox start -i
            

            【讨论】:

              【解决方案8】:

              我在从事高速公路相关项目时遇到了同样的问题。

              1) 所以我从https://pypi.python.org/packages/source/s/setuptools/ 下载 setuptools.-0.9.8.tar.gz 并解压。

              2)然后我得到 pkg_resources 模块并将其复制到所需的文件夹中。 **在我的情况下,该文件夹是 C:\Python27\Lib\site-packages\autobahn

              【讨论】:

                【解决方案9】:

                就我而言,包裹python-pygments 被遗漏了。你可以通过命令修复它:

                sudo apt-get install python-pygments

                如果pandoc 有问题。你应该安装pandocpandoc-citeproc

                sudo apt-get install pandoc pandoc-citeproc

                【讨论】:

                  【解决方案10】:

                  仅当您可以卸载 python 时尝试此操作。

                  我卸载了 python 使用

                  brew uninstall python
                  

                  后来安装使用

                  brew install python
                  

                  然后就成功了!

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2015-10-04
                    • 1970-01-01
                    相关资源
                    最近更新 更多