产生
importError: cannot import name 'open_pre' from 'io' (unknownlocation)于以下事实:有两个不同版本的Python相互冲突。
python仍指向旧版本3.7,但
PYTHONPATH已更新为指向新3.8版本。由于文档的
PYTHONPATH状态,它成为 预先考虑 到模块搜索路径,因此阴影任何内建模块:
默认搜索路径取决于安装,但通常以
prefix/lib/pythonversion(请参见PYTHONHOME上文)开头。它总是 附加
到PYTHONPATH。
您可以通过创建两个不同的虚拟环境来重现该行为,然后在
PYTHONPATH指向另一个的同时启动一个虚拟环境。在下文中我用Miniconda创建两个不同的环境中,
py37并且
py38,分别含有3.7和3.8安装。
(py37) user@pc:~$ python --versionPython 3.7.6(py37) user@pc:~$ PYTHonPATH=~/miniconda3/envs/py38/lib/python3.8/ pythonFatal Python error: init_sys_streams: can't initialize sys standard streamsTraceback (most recent call last): File "/home/user/miniconda3/envs/py38/lib/python3.8/io.py", line 54, in <module>importError: cannot import name 'open_pre' from 'io' (unknown location)Aborted (core dumped)



