【问题标题】:Transcrypt gives can't import codecs error while importing jsonTranscrypt 在导入 json 时出现无法导入编解码器错误
【发布时间】:2020-11-29 23:45:32
【问题描述】:

我正在尝试使用命令transcrypt -b -m -n hello.py 使用 transcrypt 将 python 文件转换为 JS。我在我的 python 脚本中导入了 JSON:

import json

# the MAIN meaty function!!!
def exec_script_str(script_str, raw_input_lst_json, options_json, finalizer_func):
  if options_json:
    options = json.loads(options_json)
...

我收到此错误消息:

Transcrypt (TM) Python to JavaScript Small Sane Subset Transpiler 版本 3.7.16 版权所有 (C) Geatec Engineering。许可证:Apache 2.0

将目标代码保存在: /home/sarwagya/Desktop/Hello/target/org.transcrypt.runtime.js 将目标代码保存在: /home/sarwagya/Desktop/Hello/target/re.translate.js 保存目标 代码在:/home/sarwagya/Desktop/Hello/target/re.js 保存目标 代码在:/home/sarwagya/Desktop/Hello/target/warnings.js

编译时出错(最后一个有问题的文件):
文件 '/home/sarwagya/Desktop/Hello/hello.py',第 2186 行,在导入时:
文件 '/usr/lib/python3.8/json/init.py',第 108 行,导入:
文件'codecs',第44行,即:Can't import module 'codecs'

中止

在此之前我有一些进口,这似乎有效。由于 Javascript 中有一个 JSON 包,我原以为成绩单会支持这一点。 感谢您的帮助。

【问题讨论】:

    标签: javascript json python-3.x transcrypt


    【解决方案1】:

    完整的标准库尚未移植到 Transcrypt,包括 json 库。在大多数情况下,您可以通过使用 JavaScript 等效库来支持您尝试完成的任何事情来解决这个问题,并且可以直接从您的 Python 代码中调用它们。但是 Transcrypt 不会自动为您执行此库映射,因此您必须显式导入 JavaScript 库才能使用它。

    由于 Python dictionaries are converted to JavaScript objects 与 Transcrypt 一起使用,您或许可以按原样使用 JSON 数据。否则,您可以直接调用内置的JSON.parse()JSON.stringify(),而无需导入。

    【讨论】:

    • 谢谢,使用 JSON.parse 和 JSON.stringify 代替工作。
    • 您是否也知道import ast 的转密(javascript)替代方案,即ast.parse(script_str)ast.walk(tree)ast.Importast.ImportFrom,会是什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多