Nim 在哪里搜索要导入的模块?
Where does Nim search for modules to import?
当使用 import
语句时,how/where Nim 会搜索模块吗?
我知道可以使用文件路径,但是如果我不想使用文件路径,我应该把我本地定义的模块放在我机器上的什么地方?
我还没有使用过 Nimble,我认为这是一种方式,但我更感兴趣的是如果模块 仅 是在本地定义的,它将如何完成。
你基本上有两个选择:
可以在编译命令中传入搜索路径:nim c -p:~/myModulePath
.
您可以通过 path="$home/myModulePath"
将搜索路径添加到您的 config/nim.cfg
。该文件还准确地告诉您 how/where Nim 默认查找导入。
Nim 在以下位置搜索模块:
- 相对于导入模块的目录(通过
import dir.modname
或 import dir/modname
如果它不在同一目录中)。
- 相对于主模块的目录(同样,如果不在同一目录中,则通过
import dir.modname
或 import dir/modname
)。
- 在命令行选项
--path
或 -p
指定的目录中。
- 在Nimble包目录下,通常是
~/.nimble/pkgs
.
- 在标准库中。
命令 nim dump
将显示所有正在使用的模块搜索路径(除了 Nimble 包)。
您可以执行以下操作来使用您自己的模块:
- 使用
--path/-p
命令行选项将包含它们的目录传递给编译器。
- 将相同的命令行选项放入 config files 之一。其中有几个,全局文件(用于系统范围的设置)、用户文件(用于每个用户设置)、项目文件(用于项目设置)和父目录配置文件(用于目录是当前项目目录的父级,用于多个项目共享的配置)。选择您需要的范围。
- 使用 Nimble 为当前用户完成的任何项目安装模块。为此,在目录中创建一个
libname.nimble
(用实际名称替换libname
)文件并使用nimble install
。然后,您可以直接从任何其他项目导入该库中的 *.nim
文件。使用nimble uninstall libname
再次卸载库。
基本 libname.nimble
文件具有以下内容。
[Package]
name = "libname"
author = "Your Name"
version = "0.1"
description = "Example library."
license = "none"
nim dump
命令将向您显示路径中的内容。查看 advanced compiler options.
的文档
当使用 import
语句时,how/where Nim 会搜索模块吗?
我知道可以使用文件路径,但是如果我不想使用文件路径,我应该把我本地定义的模块放在我机器上的什么地方?
我还没有使用过 Nimble,我认为这是一种方式,但我更感兴趣的是如果模块 仅 是在本地定义的,它将如何完成。
你基本上有两个选择:
可以在编译命令中传入搜索路径:
nim c -p:~/myModulePath
.您可以通过
path="$home/myModulePath"
将搜索路径添加到您的config/nim.cfg
。该文件还准确地告诉您 how/where Nim 默认查找导入。
Nim 在以下位置搜索模块:
- 相对于导入模块的目录(通过
import dir.modname
或import dir/modname
如果它不在同一目录中)。 - 相对于主模块的目录(同样,如果不在同一目录中,则通过
import dir.modname
或import dir/modname
)。 - 在命令行选项
--path
或-p
指定的目录中。 - 在Nimble包目录下,通常是
~/.nimble/pkgs
. - 在标准库中。
命令 nim dump
将显示所有正在使用的模块搜索路径(除了 Nimble 包)。
您可以执行以下操作来使用您自己的模块:
- 使用
--path/-p
命令行选项将包含它们的目录传递给编译器。 - 将相同的命令行选项放入 config files 之一。其中有几个,全局文件(用于系统范围的设置)、用户文件(用于每个用户设置)、项目文件(用于项目设置)和父目录配置文件(用于目录是当前项目目录的父级,用于多个项目共享的配置)。选择您需要的范围。
- 使用 Nimble 为当前用户完成的任何项目安装模块。为此,在目录中创建一个
libname.nimble
(用实际名称替换libname
)文件并使用nimble install
。然后,您可以直接从任何其他项目导入该库中的*.nim
文件。使用nimble uninstall libname
再次卸载库。
基本 libname.nimble
文件具有以下内容。
[Package]
name = "libname"
author = "Your Name"
version = "0.1"
description = "Example library."
license = "none"
nim dump
命令将向您显示路径中的内容。查看 advanced compiler options.