9

使用该import语句时,Nim 如何/在哪里执行模块搜索?

我知道可以使用文件路径,但是如果我不想使用文件路径,我应该将我本地定义的模块放在我的机器上的什么位置?

我还没有使用过 Nimble,我认为这是一种方式,但我更感兴趣的是如果模块在本地定义,它将如何完成。

4

3 回答 3

14

Nim 在以下位置搜索模块:

  1. 相对于导入模块的目录(通过import dir.modname或者import dir/modname如果它不在同一目录中)。
  2. 相对于主模块的目录(同样,通过import dir.modname或者import dir/modname如果它不在同一目录中)。
  3. 在命令行选项--path-p.
  4. 在 Nimble 包目录中,通常是~/.nimble/pkgs.
  5. 在标准库中。

该命令nim dump将显示所有正在使用的模块搜索路径(Nimble 包除外)。

您可以执行以下操作来使用您自己的模块:

  1. --path/-p使用命令行选项将包含它们的目录传递给编译器。
  2. 将相同的命令行选项放入其中一个配置文件中。其中有几个,全局文件(用于系统范围的设置)、用户文件(用于每个用户的设置)、项目文件(用于项目设置)和父目录配置文件(用于是当前项目目录的父级,用于多个项目共享的配置)。选择您需要的范围。
  3. 使用 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"
于 2015-05-05T10:22:35.327 回答
3

你基本上有两个选择:

  1. 您可以在编译命令中传递搜索路径:nim c -p:~/myModulePath.

  2. 您可以将搜索路径添加到您config/nim.cfg的 by path="$home/myModulePath"。该文件还准确地告诉您 Nim 默认如何/在何处查找导入。

于 2015-05-05T08:39:41.030 回答
1

nim dump命令将向您显示路径中的内容。查看高级编译器选项的文档。

于 2015-05-12T04:55:23.863 回答