ImportError: No module named typing

ImportError: No module named typing

我正在尝试创建 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 虚拟环境


我是 运行 MacOS Big Sur,配备 2018 Intel i3 Mac Mini

恐怕您必须使用其他版本。我知道你已经听过很多次了,但是 python 2.7 不再受支持(自 2021 年 1 月 1 日起),所以这就是它可能显示错误的原因。

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

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

typing

New in version 3.5.

因此 import typing 导致 python2.7 失败也就不足为奇了。因此,如果您发现使用 import typing 的项目至少适用于 python 3.5,或者使用与内置模块不同的 typing。如果您知道想要 python2 生命终结的后果,请阅读 Sunsetting Python 2. If you have legacy python2 you might try porting to python3

点子 stopped supporting Python 2 in version 21。您需要为 Python 2.

安装旧版本的 pip

Python 2 已达到生命周期结束 (EOL)。因此,在版本 21 中从 pip 中删除了对 Python 2 的支持。您需要将 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中安装了一个随机包,它成功了。