![](/img/trans.png)
[英]Why am I receiving this error-no module named STRINGIO when trying to connect to MYSQL DB using sshtunnel
[英]no module named StringIO
我有 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'
。
我嘗試在 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 失敗。
我認為您正在尋找 Python 3.x 中的io模塊。 cStringIO
(這是一個 Python 2 模塊,它是StringIO
的更快版本,請參見此處)已被io
替換,並進行了許多其他更改。 有關更多信息,請參見此處。
歷史記錄:這就是我們不再同時擁有cStringIO
和StringIO
:
Python 2.x 中的一個常見模式是用純 Python 實現模塊的一個版本,以及作為 C 擴展實現的可選加速版本; 例如,pickle 和 cPickle。 這給這些模塊的每個用戶帶來了導入加速版本和使用純 Python 版本的負擔。 在 Python 3.0 中,加速版本被視為純 Python 版本的實現細節。 用戶應該始終導入標准版本,它會嘗試導入加速版本並回退到純 Python 版本。 pickle / cPickle 對接受了這種處理。 配置文件模塊在 3.1 的列表中。 StringIO 模塊已經變成了 io 模塊中的一個類。 (來源)
使用這個:
try:
from StringIO import StringIO
except ImportError:
from io import StringIO
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.