【问题标题】:How do I fix python 3.8.5. error "ImportError: cannot import name 'open_code' from 'io' (unknown location)"如何修复 python 3.8.5。错误“ImportError:无法从 'io'(未知位置)导入名称 'open_code'”
【发布时间】:2020-09-14 22:44:02
【问题描述】:

就 python 而言,我是一个完全的新手,但需要为 PlatformIO 安装它。我在 Windows 10 上安装了 python-3.8.5-amd64.exe 并在 VSCode 中安装了 PlatformIO。但是当我尝试构建时,我得到:

Fatal Python error: init_sys_streams: can't initialize sys standard streams
Traceback (most recent call last):
  File "C:\Program Files\Python38\lib\io.py", line 54, in <module>
ImportError: cannot import name 'open_code' from 'io' (unknown location)

由于 io.py 是作为 python 安装的一部分安装的,我假设应该安装“open_code”符号。从 python-3.8.5-amd64.exe 运行修复选项并重新启动声称一切正常,但仍然失败。

有人可以简单地解释一下我需要做什么来解决这个问题吗?

注意:有一个答案here 表明这是由于安装了 2 个版本的 python 并且某些东西指向了错误的版本,但它没有解释如何以我理解的任何方式修复它(以及用于 Linux 安装)。

谢谢。

【问题讨论】:

  • edit 您的帖子并添加minimal reproducible example 来演示问题。如果没有看到导致错误的代码,我们就忍不住了。
  • 另外...你没有碰巧将你的 python 文件命名为io.py,是吗?
  • 这就是回溯的样子......
  • @MattDMo 好的,这是我正在尝试构建的 Marlin 固件。除了确认 io.py 的第 54 行是导入之外,我没有编辑任何 python 文件。这昨天有效,但后来我意识到我安装了一个 32 位版本的 python 导致其他问题,所以我卸载它并尝试安装 64 位版本。正如我所说,我是一个完整的 python 新手,所以不知道如何生成“最小的可重现示例”。我假设这是一个安装问题,有人会知道我卸载时没有清理哪个环境变量或注册表设置。
  • 卸载 32 位版本并安装 64 位版本后是否重新启动?这有时会产生奇迹。

标签: python python-3.8 platformio


【解决方案1】:

解决方案是从我的用户文件夹中删除 .platformio 文件夹。显然,PlatformIO 正在“记住”之前的 python 安装并混淆了事情!

【讨论】:

  • 这对我也有用。一次。当我对 Marlin 进行了一些更改并尝试重建时,问题又回来了。这对你来说是一个永久的修复吗?
  • 我想我找到了一个糟糕的解决方法。 Platformio 正在寻找我的 Python 3.8 安装(在我的路径上)。在看到同样的事情发生在你身上后,我怀疑这是问题所在。重命名 Python 3.8 文件夹(作为快速修复,使其内容不再位于路径上)解决了该问题。当然,这可能会导致需要找到该版本的 Python 的其他内容。
  • @casterle 自从(一个多月)以来我没有遇到任何问题,所以从这个意义上说,这是一个“永久”修复。
  • 我认为你是对的。我有这个错误,只需删除 .platformio 文件夹中的任何 python 文件夹即可解决。我只是猜测如果 platformio 更新,它会再次出现。
猜你喜欢
  • 1970-01-01
  • 2021-02-06
  • 2021-03-21
  • 2020-09-08
  • 2021-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多