MySQL 外壳 8.0  / 第 13 章自定义 MySQL Shell  /  13.2 添加模块搜索路径

13.2 添加模块搜索路径

当您使用require()JavaScript 中的import函数或 Python 中的函数时,为变量列出的模块搜索路径sys.path 用于搜索指定的模块。MySQL Shell 初始化sys.path变量以包含以下模块搜索路径:

  • 模块搜索路径环境变量指定的文件夹(MYSQLSH_JS_MODULE_PATH在 JavaScript 模式下,或PYTHONPATH在 Python 模式下)。

  • 对于 JavaScript, share/mysqlsh/modules/jsMySQL Shell 主文件夹的子文件夹,或者 /modules/js包含 mysqlsh二进制文件的文件夹的子文件夹,如果主文件夹不存在的话。

  • 对于 Python,依赖于安装的默认路径,对于 Python 的标准导入机制。

MySQL Shell 也可以加载内置模块 mysqlmysqlx使用 require()orimport 函数,这些模块不需要使用 sys.path变量指定。

对于 JavaScript 模式,MySQL Shell 加载在指定位置找到的第一个模块,该模块是(按优先顺序)具有指定名称的文件,或者具有指定名称加上文件扩展名的文件.js,或者 init.js包含在文件夹中的文件指定的名称。对于 Python 模式,Python 的标准导入机制用于加载 MySQL Shell 的所有模块。

对于JavaScript模式,从MySQL Shell 8.0.19开始,MySQL Shell也提供了通过 require()函数加载本地模块的支持。如果指定模块名称或路径前缀为./../,则在批处理模式下,MySQL Shell 在包含当前正在执行的 JavaScript 文件或模块的文件夹中搜索指定模块。在交互模式下,给定这些前缀之一,MySQL Shell 在当前工作目录中搜索。如果在该文件夹中未找到该模块,MySQL Shell 将继续检查该sys.path变量指定的模块搜索路径。

您可以将更多模块搜索路径添加到 sys.path变量,方法是将它们附加到 JavaScript 模式或 Python 模式的模块搜索路径环境变量(请参阅 第 13.2.1 节,“模块搜索路径环境变量”),或者直接将它们附加到sys.path 使用 JavaScript 模式或 Python 模式的 MySQL Shell 启动脚本变量(请参阅 第 13.2.2 节,“启动脚本中的模块搜索路径变量”)。您还可以sys.path在运行时修改变量,这会立即更改require()import函数的行为。