python 3.x ImportError:没有名为“ cStringIO”的模块


78

如何解决ImportError: No module named 'cStringIO'Python 3.x下的问题?


3
接受@SimonVissers解决方案。我不应该尝试安装“电子邮件”,因为它可以作为模块使用。因此,只需将电子邮件导入代码并根据需要对应用程序代码进行更改。
jvi

迁移到3.x时,这是一个普遍的问题,而不仅仅是安装任何特定的软件包,例如电子邮件。
smci

Answers:


120

从Python 3.0 changelog;

StringIO和cStringIO模块不见了。而是导入io模块,并将io.StringIO或io.BytesIO分别用于文本和数据。

从Python 3电子邮件文档中可以看出,io.StringIO应改为使用:

from io import StringIO
from email.generator import Generator
fp = StringIO()
g = Generator(fp, mangle_from_=True, maxheaderlen=60)
g.flatten(msg)
text = fp.getvalue()

参考:https : //docs.python.org/3/library/io.html


5
io模块存在于我的python环境中。但是我无法安装电子邮件本身,这是我的问题。即“点子安装电子邮件”失败。我是否应该破解一些代码并对其进行更改以进行安装?
jvi

16
@jvi:您不应安装email,而应仅import email将其安装在Python标准库中。
Simeon Visser 2015年

14

我遇到了同样的问题,因为我的文件名为email.py。我重命名了文件,问题消失了。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.