当您使用require()JavaScript 中的函数或importPython 中的函数时,为变量列出的模块搜索路径sys.path 将用于搜索指定的模块。 MySQL Shell 初始化该sys.path变量以包含以下模块搜索路径:
- 模块搜索路径环境变量指定的文件夹(
MYSQLSH_JS_MODULE_PATH在 JavaScript 模式或PYTHONPATHPython 模式下)。 - 对于 JavaScript,是
share/mysqlsh/modules/jsMySQL Shell 主文件夹的子文件夹,或者 包含mysqlsh/modules/js二进制文件的文件 夹的子文件夹(如果主文件夹不存在)。 - 对于 Python,依赖于安装的默认路径,就像 Python 的标准导入机制一样。
MySQL Shell还可以使用 or函数 加载内置模块 mysql, 并且这些模块不需要使用变量指定 。 mysqlx``require()``import``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
13.2.1 模块搜索路径环境变量
您可以通过将文件夹添加到适当的特定于语言的模块搜索路径环境变量来将文件夹添加到模块搜索路径。当您启动或重新启动 MySQL Shell 时,MySQL Shell 会将这些文件夹包含在模块搜索路径中。如果想立即添加到搜索路径, sys.path直接修改变量即可。
对于 JavaScript,将文件夹添加到 MYSQLSH_JS_MODULE_PATH环境变量中。该变量的值是由分号字符分隔的路径列表。
对于 Python,将文件夹添加到PYTHONPATH 环境变量中。该变量的值是在 Windows 平台上由分号字符分隔的路径列表,在 Unix 平台上由冒号字符分隔的路径列表。
对于 JavaScript,添加到环境变量的文件夹位于sys.path变量值的末尾,对于 Python,它们位于变量值的开头。
请注意,Python 加载模块的行为不受 MySQL Shell 控制;适用 Python 的正常导入行为。
13.2.2 启动脚本中的模块搜索路径变量
可以使用JavaScript 模式或 Python 模式的sys.pathMySQL Shell 启动脚本自定义 该变量。有关启动脚本及其位置的更多信息,请参阅 第 13.1 节 “使用启动脚本”。使用启动脚本,您可以将模块路径直接附加到 变量。 mysqlshrc.js``mysqlshrc.py``sys.path
请注意,每个启动脚本仅在相关语言模式下使用,因此在 mysqlshrc.jsJavaScript 模式中指定的模块搜索路径仅在 Python 模式下可用(如果它们也在 mysqlshrc.py.
对于 Python,修改mysqlshrc.py文件以将所需的路径附加到sys.path 数组中:
解释# Import the sys module
import sys
# Append the additional module paths
sys.path.append('~/custom/python')
sys.path.append('~/other/custom/modules')
对于 JavaScript,修改mysqlshrc.js文件以将所需的路径附加到 sys.path数组中:
// Append the additional module paths
sys.path = [...sys.path, '~/custom/js'];
sys.path = [...sys.path, '~/other/custom/modules'];
附加到数组的相对路径 sys.path是相对于当前工作目录进行解析的。
当您在 JavaScript 或 Python 模式下启动或重新启动 MySQL Shell 时,以及在 MySQL Shell 运行时第一次更改为另一种模式时,会加载启动脚本。此后,MySQL Shell 不会再次搜索启动脚本,因此如果您已经进入相关模式,则需要重新启动 MySQL Shell 才能对启动脚本进行更新。或者,您可以在运行时修改sys.path变量,在这种情况下require()或 import函数会立即使用新的搜索路径。
**




