【问题标题】:Transcrypt with import statement使用 import 语句进行 Transcrypt
【发布时间】:2021-04-01 13:34:30
【问题描述】:

我有一个名为 hello.py 的 Python 文件:

import openpyxl

def operate_excel():
    file = 'dummy.xlsx'
    new_row = ['data1', 'data2', 'data3', 'data4']

    wb = openpyxl.load_workbook(filename=file)
    ws = wb['Sheet1']     # Older method was  .get_sheet_by_name('Sheet1')
    row = ws.max_row + 1

    for col, entry in enumerate(new_row, start=1):
        ws.cell(row=row, column=col, value=entry)

    wb.save(file)

当我直接从 Python 运行它时,它可以工作。但是,当我尝试使用以下命令对其进行转码时,它失败了:

python3 -m transcrypt -b ./Codes/js_excel_operations/hello.py

此命令生成以下输出行:

Transcrypt (TM) Python to JavaScript Small Sane Subset Transpiler Version 3.7.16
Copyright (C) Geatec Engineering. License: Apache 2.0


Saving target code in: /Users/stuck/Codes/js_excel_operations/__target__/org.transcrypt.__runtime__.js
Saving minified target code in: /Users/stuck/Codes/js_excel_operations/__target__/org.transcrypt.__runtime__.js
Saving target code in: /Users/stuck/Codes/js_excel_operations/__target__/openpyxl._constants.js
Saving minified target code in: /Users/stuck/Codes/js_excel_operations/__target__/openpyxl._constants.js

Error while compiling (offending file last):
File './Codes/js_excel_operations/hello.py', line 1, at import of:
File '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/openpyxl/__init__.py', line 8, at import of:
File 'openpyxl.reader.excel', line 62, namely:

Import error, can't find any of:
    ./Codes/js_excel_operations/drawings/find_images.py
    ./Codes/js_excel_operations/drawings/find_images.js
    /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/transcrypt/modules/drawings/find_images.py
    /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/transcrypt/modules/drawings/find_images.js
    /Users/stuck/drawings/find_images.py
    /Users/stuck/drawings/find_images.js
    /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/drawings/find_images.py
    /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/drawings/find_images.js
    /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/drawings/find_images.py
    /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/drawings/find_images.js
    /Users/stuck/Library/Python/3.7/lib/python/site-packages/drawings/find_images.py
    /Users/stuck/Library/Python/3.7/lib/python/site-packages/drawings/find_images.js
    /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/drawings/find_images.py
    /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/drawings/find_images.js
    /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pyradio-0.8.8-py3.7.egg/drawings/find_images.py
    /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pyradio-0.8.8-py3.7.egg/drawings/find_images.js
    ./Codes/js_excel_operations/drawings.py
    ./Codes/js_excel_operations/drawings.js
    /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/transcrypt/modules/drawings.py
    /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/transcrypt/modules/drawings.js
    /Users/stuck/drawings.py
    /Users/stuck/drawings.js
    /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/drawings.py
    /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/drawings.js
    /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/drawings.py
    /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/drawings.js
    /Users/stuck/Library/Python/3.7/lib/python/site-packages/drawings.py
    /Users/stuck/Library/Python/3.7/lib/python/site-packages/drawings.js
    /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/drawings.py
    /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/drawings.js
    /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pyradio-0.8.8-py3.7.egg/drawings.py
    /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pyradio-0.8.8-py3.7.egg/drawings.js

Aborted

那么,可能是什么问题?我错过了什么吗?

【问题讨论】:

    标签: python transcrypt


    【解决方案1】:

    请参阅 Transcrypt 文档中的 section 1.3。简而言之,您通常会想要使用 JS 第三方库。

    根本原因是 Transcrypt 无法将带有已编译组件的库转换为 JS。此外,在 Transcrypt 中,所有的标准库都没有实现,只有一些 essentials。对于其他所有内容,请使用 JS 库。

    【讨论】:

    • 谢谢你。那么,作为下面的问题,你知道任何稳定的 JS 的 xlsx 库或者你有什么建议吗?我怎样才能编辑那个该死的文件:)?
    • 这里有一个similar question 有一些选项。希望对您有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-04
    • 2020-09-12
    • 2017-08-02
    • 1970-01-01
    • 2020-11-13
    相关资源
    最近更新 更多