产生ImportError: cannot import name 'open_code' from 'io' (unkNown location)
于以下事实:有两个不同版本的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 --version
Python 3.7.6
(py37) user@pc:~$ PYTHONPATH=~/miniconda3/envs/py38/lib/python3.8/ python
Fatal Python error: init_sys_streams: can't initialize sys standard streams
Traceback (most recent call last):
File "/home/user/miniconda3/envs/py38/lib/python3.8/io.py", line 54, in <module>
ImportError: cannot import name 'open_code' from 'io' (unkNown location)
Aborted (core dumped)