【问题标题】:ImportError: No module named typingImportError:没有名为类型的模块
【发布时间】:2021-08-11 20:32:00
【问题描述】:

我正在尝试创建一个python2 virtualenv,所以我尝试pip install virtualenv 并得到

Traceback (most recent call last):
  File "/usr/local/bin/pip", line 11, in <module>
    load_entry_point('pip==21.1.1', 'console_scripts', 'pip')()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 489, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 2843, in load_entry_point
    return ep.load()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 2434, in load
    return self.resolve()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 2440, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/Library/Python/2.7/site-packages/pip-21.1.1-py2.7.egg/pip/__init__.py", line 1, in <module>
    from typing import List, Optional
ImportError: No module named typing

pip install typing 出现几乎相同的错误

Traceback (most recent call last):
  File "/usr/local/bin/pip", line 11, in <module>
    load_entry_point('pip==21.1.1', 'console_scripts', 'pip')()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 489, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 2843, in load_entry_point
    return ep.load()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 2434, in load
    return self.resolve()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 2440, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/Library/Python/2.7/site-packages/pip-21.1.1-py2.7.egg/pip/__init__.py", line 1, in <module>
    from typing import List, Optional
ImportError: No module named typing

很多解决方案都建议使用 python3,但我特别想创建一个 python 2 虚拟环境


我在 2018 Intel i3 Mac Mini 上运行 MacOS Big Sur

【问题讨论】:

  • 我不知道是谁对所有 3 个答案投了反对票,但如果他们看到所有答案都被反对,这很可能会阻止人们留下更多答案
  • 当时的所有答案都集中在错误的事情上,而不是解决您的问题。
  • 您需要为您的 Python 降级 pip。见stackoverflow.com/a/65871131/7976758。你的问题不一样但是降级的过程和网址是一样的。

标签: python python-2.7 pip virtualenv python-typing


【解决方案1】:

Python 2 已达到其生命周期结束 (EOL)。因此,对 Python 2 的支持从版本 21 中的pip 中删除。您需要将pip 降级到版本 20。


我试过这个(在 shell 命令行中):

# downgrade pip to 20.3.4
pip install --user pip==20.3.4
# better: 'pip<21', but it must be quoted!

# install virtualenv if not installed already
pip install --user virtualenv

# create a new venv for old python
virtualenv -p /usr/bin/python2.7 /tmp/venv27

# update pip back to the recent version
pip install --user --upgrade pip

现在,pip --version 显示版本 21,但在激活的环境中存在版本 20:

sh-5.0$ pip --version
pip 21.1.1 from /home/vpfb/.local/lib/python3.9/site-packages/pip (python 3.9)

sh-5.0$ pwd
/tmp/venv27/bin

sh-5.0$ source ./activate

(venv27) sh-5.0$ pip --version
pip 20.3.4 from /tmp/venv27/lib/python2.7/site-packages/pip (python 2.7)

我尝试在venv中安装一个随机包,它成功了。

【讨论】:

  • 你会如何建议这样做
  • 带有pip==20.3.4(最新点数20.X.Y)参数,如下所示:stackoverflow.com/questions/5226311/…
  • 有没有办法在虚拟环境中完成这一切?
  • 当我尝试 pip install pip==20.3.4 时,我在输入时遇到同样的错误
  • @Sam 因为你的 pip 已经“损坏”了,你不能用它来安装它的另一个版本。您需要以其他方式从头开始安装它。请查阅文档以了解最适合您系统的方法。
【解决方案2】:

恐怕您将不得不使用另一个版本。我知道您经常听到这个问题,但不再支持 python 2.7(自 2021 年 1 月 1 日起),这就是它可能显示错误的原因。

【讨论】:

  • 不支持到底是什么意思?我想要做的是运行old Github project 而不改变任何东西。 Python2 可能不被支持,但这仍然可能吗?
  • 我认为它不会再起作用了。不支持意味着它根本不再工作。
  • @shreyas 根本不是这个意思。现有软件将一如既往地正常工作。里面没有终止开关。这只是意味着永远不会发布进一步的更新,并且如果某些东西不起作用,请不要来哭泣。
【解决方案3】:

typing

3.5 版中的新功能。

所以import typing 导致python2.7 失败也就不足为奇了。因此,如果您发现使用import typing 的项目至少适用于python 3.5,或者使用与内置模块不同的typing。如果您知道想要 python2 生命周期结束的后果,请阅读 Sunsetting Python 2。如果你有旧版 python2,你可以试试porting to python3

【讨论】:

  • 有没有什么工具可以方便的将python2代码转换成python3
  • @Sam 您不需要将项目转换为 Python 3 来运行它。取决于项目的复杂性,这可能需要数月的努力。
  • @Sam 看看2to3
【解决方案4】:

stopped supporting Python 2 in version 21。您需要为 Python 2 安装旧版本的 pip。

【讨论】:

    【解决方案5】:

    打字模块仅对python 3.5及以上版本有效。

    https://pypi.org/project/typing/

    【讨论】:

      猜你喜欢
      • 2017-07-11
      • 2013-03-11
      • 2012-12-07
      • 2016-01-19
      • 2012-05-23
      • 2019-07-29
      • 2015-07-04
      • 2014-03-15
      • 2017-12-29
      相关资源
      最近更新 更多