MySQL Shell 8.4  /  自定义 MySQL Shell  /  添加模块搜索路径

13.2 添加模块搜索路径

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

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

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

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

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

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

对于 JavaScript 模式,MySQL Shell 还支持 require() 函数加载本地模块。如果在批处理模式下指定以 ./../ 为前缀的模块名称或路径,MySQL Shell 会在包含当前正在执行的 JavaScript 文件或模块的文件夹中搜索指定的模块。在交互模式下,给定其中一个前缀,MySQL Shell 会在当前工作目录中搜索。如果在该文件夹中找不到该模块,MySQL Shell 会继续检查由 sys.path 变量指定的模块搜索路径。

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