首页 > 解决方案 > “SyntaxError: invalid syntax” 总是在带有 micro:bit 的 REPL 模式下显示在 mu-editor 上

问题描述

我在 Ubuntu 18.04 上使用 mu-editor 1.0.0。当我尝试做一个非常简单的计算,例如“2+2”(没有“”)时,REPL 模式总是显示如下错误信息:

on v1.9.2-34-gd64154c73 on 2017-09-01; micro:bit v1.0.0-rc.2 with 
nRF51822

Type "help()" for more information.
>>> 
>>> 2+2
Traceback (most recent call last):
    File "<stdin>", line 2
SyntaxError: invalid syntax
>>> 

下面是我的屏幕:

在此处输入图像描述

我试图在互联网上找到答案,但我仍然无法弄清楚如何以及为什么。请帮助我尝试处理这个问题。

无论如何都非常感谢。

=============更新2017/07/25 18:48(台湾)==============

谢谢你,亲爱的@stijn :)

我在这个问题上取得了一些进展。但是,我仍然没有完全解决这个问题。

在下面的网址中,有好心的网友提供了解决问题的线索: https://github.com/mu-editor/mu/issues/576

ZanderBrown 说:“只能假设有一些看不见的炭或什么”。这让我想知道是否有可能与我的输入法、输入设备或语言(区域设置)相关。

由于我是台湾人,所以我们使用繁体中文(与中国大陆使用的简体中文不同)。在/etc/default/locale中,我原来的设置如下:

LANG="zh_TW.UTF-8"
LANGUAGE="zh_TW:zh:en_US:en"
LC_NUMERIC="zh_TW.UTF-8"
LC_TIME="zh_TW.UTF-8"
LC_MONETARY="zh_TW.UTF-8"
LC_PAPER="zh_TW.UTF-8"
LC_IDENTIFICATION="zh_TW.UTF-8"
LC_NAME="zh_TW.UTF-8"
LC_ADDRESS="zh_TW.UTF-8"
LC_TELEPHONE="zh_TW.UTF-8"
LC_MEASUREMENT="zh_TW.UTF-8"

然后,我首先将内容更改为如下:

LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=lzh_TW.UTF-8
LC_TIME=en_US.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=lzh_TW.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=lzh_TW.UTF-8
LC_NAME=lzh_TW.UTF-8
LC_ADDRESS=lzh_TW.UTF-8
LC_TELEPHONE=lzh_TW.UTF-8
LC_MEASUREMENT=lzh_TW.UTF-8
LC_IDENTIFICATION=lzh_TW.UTF-8
LC_ALL=

其次,我尝试将我的地区和语言更改为英语和美国。

在此处输入图像描述

三、我把我的键盘输入法系统设置为none

在此处输入图像描述

最后,我重新启动系统。我们可以看到一个有趣的结果:</p>

在此处输入图像描述

如果我从其他文本编辑器复制代码然后在 REPL 模式下粘贴,它可以打印正确的结果,但是 >>> 标记后的单词会很奇怪......

如果我尝试使用键盘直接输入,它不会重复字符,或者没有响应。 在此处输入图像描述

此外,我可以使用 minicom 模式来使用 REPL,但它仍然重复字符....

在此处输入图像描述

===================更新 2017/07/26 14:26(台湾)============== 谢谢大家。我几乎解决了这个问题。这是我的解决方案和可能的原因。

我的朋友,一位硬件工程师告诉我尝试使用一个名为minicom of linux 的工具包。我们将 micro:bit 与 PC(ubuntu) 连接,然后使用 minicom 检查连接状态。

$ minicom /dev/ttyACM0

(如果你想知道你用 micro:bit 连接的端口,你可以使用一个名为 dmesg 的命令。)选择Serial and Port Setup 在此处输入图像描述

检查选项Serial Device是否与 dmesg 打印的结果相同。如果不是,请更改它。而且,最重要的是,保留选项Hardware Flow ControlYES。原理我看不懂,但是经过测试,还是要保持YES在此处输入图像描述

完成上述操作后,您可以选择EXIT(不是 EXIT from MINICOM)在连接 micro:bit 的 minicom 中进入 REPL 模式。您可以在这种情况下使用 python 编码,即使我的控制台屏幕仍然显示我在键入一次时输入的任何字符...

我下一步所做的是完全关闭我的电脑。并再次打开我的电脑(ubuntu)。

奇迹发生了。

在我完全关闭并再次打开我的电脑(ubuntu)后,我可以在 MU-editor 和 minicom 中使用 REPL 模式,而不会出现双字符和其他问题。请原谅我不能放我的 ScreenSchot 图片,因为我忘了把我的 micro:bit 芯片带到我的办公室。

但是,在我的笔记本电脑(Debian 9)上,将输入法系统更改为en但中文输入法后,我上面使用的方式可以工作。

所以,我认为问题的两个主要原因是:

1.区域设置和输入法系统:我们最好使用英文区域设置纯英文输入法

2.检查硬件流控制是否设置为

3.设置完所有后,请完全关闭并重新打开您的电脑或笔记本电脑。不要只是注销或重新启动

标签: pythonsyntax-errormicropythonmu

解决方案


推荐阅读