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