gpt4 book ai didi

python - 没有名为 StringIO 的模块

转载 作者:行者123 更新时间:2023-12-05 08:18:47 29 4
gpt4 key购买 nike

我有 python 3.6。我想从另一个名为“run.py”的 python 文件执行名为“operation.py”的 python 文件。

operation.py 中,我执行 from cStringIO import StringIO。 PyCharm 向我显示一条警告,指出没有名为 StringIO 的模块。我知道自 python3 以来我必须从 io 导入 StringIO 模块。但是,当我使用这个输入时,这个模块的功能就不再起作用了。

虽然在from cStringIO import StringIO中有一个警告,但代码仍然有效(我知道这个导入确实有效,因为我试图将其作为注释但它无法运行)。问题是,当我尝试通过“run.py”文件运行此文件时,它无法运行并打印以下消息:ModuleNotFoundError: No module named 'cStringIO'

我试着用这个 Unresolved reference issue in PyCharm但它没有帮助。

为什么 'operation.py' 运行了警告,但 'run.py' 却没有?我该如何解决这个问题?

操作.py:

    from cStringIO import StringIO


str_io = StringIO()
g = Generator(str_io, False)
# There is a full code here...

运行.py:

    import operation


def main():
operation

operation.py 有警告但运行良好,run.py 失败。

最佳答案

我认为您正在寻找 io Python 3.x 中的模块。 cStringIO(这是一个 Python 2 模块,是 StringIO 的更快版本,请参阅 here)被替换为 io,以及主机的其他变化。参见 here有关更多信息。

历史记录:这是我们不再同时拥有 cStringIOStringIO 的原因:

A common pattern in Python 2.x is to have one version of a module implemented in pure Python, with an optional accelerated version implemented as a C extension; for example, pickle and cPickle. This places the burden of importing the accelerated version and falling back on the pure Python version on each user of these modules. In Python 3.0, the accelerated versions are considered implementation details of the pure Python versions. Users should always import the standard version, which attempts to import the accelerated version and falls back to the pure Python version. The pickle / cPickle pair received this treatment. The profile module is on the list for 3.1. The StringIO module has been turned into a class in the io module. (Source)

关于python - 没有名为 StringIO 的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48938978/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com