导入错误:尝试安装包时没有名为'typing'的模块



当我在cmd中键入pip时,我想在我的电脑上安装pygame,我得到了这个错误:

File "C:Python34Scriptspip3-script.py", line 9, in <module>
load_entry_point('pip==21.1', 'console_scripts', 'pip3')()
File "C:Python34libsite-packagessetuptools-18.1-py3.4.eggpkg_resources__
init__.py", line 558, in load_entry_point
File "C:Python34libsite-packagessetuptools-18.1-py3.4.eggpkg_resources__
init__.py", line 2682, in load_entry_point
File "C:Python34libsite-packagessetuptools-18.1-py3.4.eggpkg_resources__
init__.py", line 2355, in load
File "C:Python34libsite-packagessetuptools-18.1-py3.4.eggpkg_resources__
init__.py", line 2361, in resolve
File "C:UsersuserAppDataRoamingPythonPython34site-packagespip__init__
.py", line 1, in <module>
from typing import List, Optional
ImportError: No module named 'typing'

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

如果你在像Centos这样的Linux上,你可能可以使用以下方法重新安装pip:

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

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

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

pip本身在尝试导入类型时失败,但没有安装类型。所以你不能运行pipinstall来修复这个问题。

TLDR;1.使用dpkg或百胜安装打字(但这可能无法解决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正在运行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

Python3现在已经安装并运行,用于python3的pip3正在运行。

在这个普通的老点子之后,蟒蛇2.7仍然被打破了。

建议的解决方案留给其他人/将来练习:也许我们可以通过完全卸载pip并重新安装旧版本来修复。如果你发现如何修复糟糕的pip,请编辑/更新答案或添加你自己的答案。

执行pip install typing,然后重试。

最新更新