ImportError: No module named 'typing' when trying to install a package

ImportError: No module named 'typing' when trying to install a package

我想在我的电脑上安装 pygame 当我在 cmd 中输入 pip 时,我收到此错误:

  File "C:\Python34\Scripts\pip3-script.py", line 9, in <module>
    load_entry_point('pip==21.1', 'console_scripts', 'pip3')()
  File "C:\Python34\lib\site-packages\setuptools-18.1-py3.4.egg\pkg_resources\__
init__.py", line 558, in load_entry_point
  File "C:\Python34\lib\site-packages\setuptools-18.1-py3.4.egg\pkg_resources\__
init__.py", line 2682, in load_entry_point
  File "C:\Python34\lib\site-packages\setuptools-18.1-py3.4.egg\pkg_resources\__
init__.py", line 2355, in load
  File "C:\Python34\lib\site-packages\setuptools-18.1-py3.4.egg\pkg_resources\__
init__.py", line 2361, in resolve
  File "C:\Users\user\AppData\Roaming\Python\Python34\site-packages\pip\__init__
.py", line 1, in <module>
    from typing import List, Optional
ImportError: No module named 'typing'

执行 pip install typing 然后重试。

pip 本身失败,因为它尝试导入输入,但未安装输入。所以你不能 运行 pip install 来解决这个问题。

TLDR; 1. 使用 dpkg 或 yum 安装 typing(但这可能无法解决损坏的 pip 问题。

TLDR; 2. 我认为问题是 python2.7/python3.x 版本问题,也许只是使用 python3.

升级pip后,我在centos 7.9上发生了类似的问题(同样是无法导入输入模块错误)。一段时间后通过移动使用 python3.

为我解决了

pip 建议:

You are using pip version 8.1.2, however version 21.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

我有点愚蠢地拒绝了那个命令。

注意,不要总是按照建议升级!

pip升级后pip坏了:

$ pip install httpserver
Traceback (most recent call last):
  File "/bin/pip2", line 7, in <module>
    from pip._internal.cli.main import main
  File "/usr/lib/python2.7/site-packages/pip/__init__.py", line 1, in <module>
    from typing import List, Optional
ImportError: No module named typing

所以,我们可以尝试安装 python 其他模块,例如通过包管理器。

yum install python-typing

安装正常,但是如果 pip 是 运行,则会出现另一个错误。

pip install httpserver
Traceback (most recent call last):
  File "/bin/pip", line 7, in <module>
    from pip._internal.cli.main import main
  File "/usr/lib/python2.7/site-packages/pip/_internal/cli/main.py", line 58
    sys.stderr.write(f"ERROR: {exc}")
                                   ^
SyntaxError: invalid syntax

所以,真正的问题可能是某些 python 软件包升级到 python3。?语法和 pip 是 运行ning python2,某种版本不匹配。

所以...好吧,解决方案会有所不同。

在我的例子中,我发现 http.server 是一个仅 python3 的对象。 python2.7 是此框上安装的唯一 python。 我想要的脚本 运行 需要 python3.

所以解决这个问题的方法是使用 python3:

# check python/pip related packages yum installed:
rpm -qa |grep -E "python|pip"
# install python 3
yum install python3
# now pip3 works, install some libs
pip3 install chevron uuid requests

Python 3 现已安装并运行,python 3 的 pip3 正在运行。

在 python2.7 的这个普通旧 pip 之后仍然坏了。

建议的解决方案作为练习留给某人 else/the 未来: 也许我们可以通过完全卸载 pip 并再次安装旧版本来修复。如果您知道如何修复糟糕的 pip,请 edit/update 回答或添加您自己的答案。

如果您不小心升级了 pip,很遗憾,您无法使用 pip 恢复以前的版本,因为 pip 已损坏。

如果您使用的是像 Centos 这样的 Linux,您也许可以使用此方法重新安装 pip:

yum reinstall -y python2-pip.noarch python27-python-pip.noarch

但是由于您使用的是 Windows,也许可以尝试使用 https://bootstrap.pypa.io/get-pip.py 重新安装 pip 并指定您想要的 pip 版本:

https://bootstrap.pypa.io/get-pip.py