导入错误: 找不到名为extern的模块。

19

我尝试使用pip安装任何软件包时都会遇到此错误。我有两个pip实例,一个是Python 2.7,另一个是Python 3。

    Could not import setuptools which is required to install from a source distribution.
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/pip/req/req_install.py", line 375, in setup_py
    import setuptools  # noqa
  File "/usr/local/lib/python2.7/dist-packages/setuptools/__init__.py", line 11, in <module>
    from setuptools.extern.six.moves import filterfalse, map
  File "/usr/local/lib/python2.7/dist-packages/setuptools/extern/__init__.py", line 1, in <module>
    from pkg_resources.extern import VendorImporter
ImportError: No module named extern
即使我尝试安装“外部”模块,也会出现这个错误。即使像python setup.py install这样使用Python自身进行安装也是如此。
谢谢您的帮助。

你使用 virtualenv 吗? - Walid Saad
是的,我使用virtualenv和virtualenvwrapper。 - Aleph Melo
我正在使用基于Ubuntu的发行版。 - Aleph Melo
我最近遇到了这个问题,可能值得向virtualenv提交一个错误报告。 我最终降级到12.0.7版本。 这引入了一个新的错误,我在这里解决了它: https://dev59.com/oV4b5IYBdhLWcg3wiiV4#30310206 - Deverp
1
重新安装setuptools在我的OSX 10.11.7上没有起作用。你能帮我吗?我的错误信息也显示找不到名为extern的模块。 - learner
显示剩余2条评论
5个回答

8
sudo apt-get purge python-pkg-resources
sudo apt-get -f install

这里实际上是删除和清除软件包(任何配置文件也会被删除)。

-f : 尝试在原地修复存在损坏依赖关系的系统。

sudo pip install packagename

#源在这里


2
虽然这段代码可能回答了问题,但提供关于为什么和/或如何回答问题的额外上下文会显著提高其长期价值。请编辑您的答案以添加一些解释。 - Toby Speight
虽然我不太理解这里到底发生了什么,但已经帮助过我两次了。 - antonavy

4

执行此操作即可生效。

sudo pip install -U setuptools 

不幸的是,这只会让pip报错'module' object has no attribute 'PROTOCOL_SSLv3' - Cerin

4
我知道这是一个旧帖子,但我想做出贡献,因为我遇到了这个问题,并且在搜索结果中一直看到这个帖子。
注意:这是在MacOS 10.12上。我的shell是zsh,我已经安装了brew。
首先我运行了以下每个命令。
brew install python
brew install python3

这将安装它,或者您会像我一样收到“已安装”消息。
接下来,运行以下命令。
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

最后:
sudo python get-pip.py

最后备注:为了使我的安装工作正常,我最终需要使用pip3命令来运行。

sudo pip3 install nameofinstallhere

这个方法解决了我的问题,其他方法都没用。感谢!在macOS 10.13.4上有效。 - Jon G.

3

我不确定这是安装问题还是包问题,但如果您已经完美地安装了Python,则似乎您将无法导入它们的任何包。

请尝试以下命令:

步骤 1:

$which pip
/usr/local/bin/pip

步骤2:

/usr/local/bin/pip install django

或任何您的软件包名称。 我正在考虑使用Ubuntu操作系统。


4
这解决了 https://github.com/pypa/pip/issues/1064 的问题,但还是感谢您的回答。 - Aleph Melo
1
如果您将使用由which返回的pip(即路径上的第一个),则在步骤2中不需要使用绝对路径。解决方案只需输入pip install django即可。 - erip

1
你可以尝试以下命令;它对我有用过:
sudo apt-get install --reinstall python-setuptools

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