当您在 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
函数加载内置模块 mysql
和 mysqlx
,这些模块不需要使用 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
变量指定的模块搜索路径。
您可以通过将它们追加到 JavaScript 模式或 Python 模式的模块搜索路径环境变量(参见 第 13.2.1 节,“模块搜索路径环境变量”),或者通过使用 JavaScript 模式或 Python 模式的 MySQL Shell 启动脚本将它们直接追加到 sys.path
变量(参见 第 13.2.2 节,“启动脚本中的模块搜索路径变量”)来向 sys.path
变量添加更多模块搜索路径。您还可以在运行时修改 sys.path
变量,这会立即更改 require()
或 import
函数的行为。