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

问题描述

有很多关于 imaplib2 has no attribute IMAP4_SSL 的问题,但其他问题中的解决方案都不适合我。

我有一个 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 的位置,您可能还需要在导入 pip 之前使用 import imaplib2 卸载旧版本正确的版本。

python3 -m pip uninstall imaplib2