首页 > 解决方案 > 如何使用 Transcrypt 在 Python 中导入 js 模块

问题描述

我有一个非常 Python-ic 的脚本,可以用 Transcrypt 编译,但问题是我拥有的一个外部依赖项是我需要 import google-cloud-bigquery. 这显然会在转译过程中引发错误,但似乎该 API 在 JavaScript 中可用(这是我的目标编译), <script src="https://apis.google.com/js/client.js"> 但 Transcrypt 转译了我的 index.py 文件,我不能只将此 JS 脚本放在 Python 中文件(我知道),那么我该如何实现呢?

我知道其他模块,例如 Numscrypt,可通过 Transcrypt 获得,但您如何在 Python 文件中实际添加模块?

标签: pythongoogle-bigquerytranscrypt

解决方案


您将需要使用库的 JavaScript 版本,并且<script>如前所述将导入放在 HTML 文件的标记中是最简单的方法。由于此时该库将位于全局命名空间中,因此您可以从 Python 程序中的任何位置调用它。

如果您使用 Parcel 或 Webpack 之类的打包工具并使用 npm 在本地存储库,则可以使用 Node.jsrequire()函数并将其分配给 Python 变量,例如:

fabric = require('fabric')

否则,如果您需要从托管位置加载 JS 库并希望在 Python 中执行此操作,您可以使用 JavaScript 使用 Transcrypt pragma 编译器指令来执行此操作,如Transcrypt 文档中所述:

fabric = __pragma__ ('js',
    '''
(function () {{
    var exports = {{}};
    {}  // Puts fabric in exports and in global window
    delete window.fabric;
    return exports;
}}) () .fabric;
    ''',
    __include__ ('com/fabricjs/fabric_downloaded.js')
)

推荐阅读