无法解析模块 'imaplib2' 没有属性 'IMAP4_SSL'

Cannot resolve module 'imaplib2' has no attribute 'IMAP4_SSL'

有很多关于 imaplib2 has no attribute IMAP4_SSL 的问题,但 none 其他问题中的解决方案对我有用。

我有一个 python 脚本,在 AWS 上 运行 多年来一直没有问题,但在我升级到 Ubuntu 20.04.2 LTS 之后,它开始抛出关于 IMAP4_SSL 的错误.调查问题后,我认为它可能与 Python 中的映射有关,但在我看来一切都是正确的。我还检查了没有安装其他 Python 可能导致冲突的版本。

这是 Python 和 imaplib2

的路径
$ which python3
/usr/bin/python3

$ python3 --version
Python 3.8.5

$ whereis python3
'/usr/bin/python3.8-config'
'/usr/bin/python3'
'/usr/bin/python3.8'
'/usr/lib/python3'
'/usr/lib/python3.8'
'/usr/lib/python3.9'
'/etc/python3'
'/etc/python3.8'
'/usr/local/lib/python3.8'
'/usr/include/python3.8'
'/usr/share/python3'
'/usr/share/man/man1/python3.1.gz'

$ sys.path
''
'/usr/lib/python38.zip'
'/usr/lib/python3.8'
'/usr/lib/python3.8/lib-dynload'
'/home/ubuntu/.local/lib/python3.8/site-packages'
'/usr/local/lib/python3.8/dist-packages'
'/usr/lib/python3/dist-packages'
> import imaplib2
> imaplib2.__file__
'/home/ubuntu/.local/lib/python3.8/site-packages/imaplib2/__init__.py'

问题可能是您使用的是来自 PyPI 的 imaplib2 的过时版本。您可以使用以下命令在 Ubuntu 上安装更新版本。

sudo apt install python3-imaplib2

(或者,如果您不在 Ubuntu,您可以随时安装 from source。)

根据您的 PYTHONPATH 和安装旧版本 imaplib2 的位置,您可能还需要在 import imaplib2 之前使用 pip 卸载旧版本将导入正确的版本。

python3 -m pip uninstall imaplib2