【问题标题】:Error message seems ambiguous without any descriptive clue错误消息似乎模棱两可,没有任何描述性线索
【发布时间】:2021-10-05 12:07:22
【问题描述】:

我是transcrypt 的新手。我创建了一个测试python文件,test.py

def test_def(a: list):      
    for i in range(len(a)):
        print(i)

xx = [2, 3, 4]
test_def(xx)

我有 python 3.9。如果我运行 python 文件,它会按预期运行和打印。

运行 transcrypt 会出现以下错误

> python -m transcrypt -b -m -n .\test.py
Error while compiling (offending file last):
        File 'test', line 2, namely:

        Error while compiling (offending file last):
        File 'test', line 2, namely:


Aborted

我不确定它期望什么以及为什么它会给出错误,任何帮助将不胜感激。

【问题讨论】:

  • 我的猜测(这只是一个猜测)是transcrypt 还不支持类型提示。删除 : list 字符串,我敢打赌它会起作用。
  • @tim-roberts 不,我尝试了两种方式!同样的错误:(
  • 你说得对,文档特别声明他们支持这一点。我的错。
  • 这是一种预感,因为它在某些编辑器中是不可见的,但是您的文件是否可以将字节顺序标记作为其前几个字符? en.wikipedia.org/wiki/Byte_order_mark
  • 如果您将该行更改为等效的for i,j in enumerate(a):,它将编译。它不能正确翻译文字列表 (xx = [2, 3, 4]),但其余部分看起来还可以。

标签: python transcrypt


【解决方案1】:

您使用的是什么版本的 Transcrypt?无法使用 Python 3.9.0 和 Transcrypt 3.9.0 复制错误。你可以这样检查(赢):

> transcrypt -h | find "Version"
# and may as well double check that the right version of python was used:
> python --version

Python 和 Transcrypt 版本应该匹配,因为 Transcrypt 使用 Python 的 AST,它可能会在版本之间发生变化。

另一个方面是我首先将 Transcrypt 安装到虚拟环境中,如下所示(Win):

> py -3.9 -m venv wenv
> wenv\Source\activate.bat
> pip install transcrypt
> python -m transcrypt -b -m -n test.py

有时会发生无意中使用了错误版本的 Python。 'py' 是 Windows 上的 Python 启动器,如果您安装了多个版本,则可用于启动正确的版本。在 Linux 上,/usr/bin 中通常有二进制文件,例如“python3.9”或链接到最新 3 版本的“python3”等符号链接。如图所示安装到虚拟环境中也很有帮助,否则可能会出现各种问题。

上面编译的test.py没有错误(Win 10 cmd.exe)。 Fwiw,该文件被保存为 utf-8 并且可以在有和没有 BOM 的情况下进行编译。

【讨论】:

  • 这似乎是问题所在,我确实看到版本不匹配。非常感谢,我会试一试并告诉你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-30
  • 2011-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多