Nim在哪里搜索要导入的模块?

时间:2015-05-04 18:20:57

标签: import module nim

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

我知道可以使用文件路径,但是如果我不想使用文件路径,我会在哪里将我在本地定义的模块放在我的机器上?

我还没有使用Nimble而且我认为这是单向的,但如果模块定义,我对如何做到这一点更感兴趣本地。

3 个答案:

答案 0 :(得分:9)

Nim在以下地方搜索模块:

  1. 相对于导入模块的目录(如果它不在同一目录中,则通过import dir.modnameimport dir/modname。)
  2. 相对于主模块的目录(如果它不在同一目录中,则再次通过import dir.modnameimport dir/modname。)
  3. 在命令行选项--path-p指定的目录中。
  4. 在Nimble包目录中,通常为~/.nimble/pkgs
  5. 在标准库中。
  6. 命令nim dump将显示正在使用的所有模块搜索路径(Nimble包除外)。

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

    1. 使用--path/-p命令行选项将包含它们的目录传递给编译器。
    2. 将相同的命令行选项放入config files之一。其中有几个,全局文件(用于系统范围的设置),用户文件(用于每个用户设置),项目文件(用于项目设置)和父目录配置文件(用于目录)是当前项目目录的父项,用于多个项目共享的配置)。选择具有所需范围的那个。
    3. 使用Nimble为当前用户完成的任何项目安装模块。为此,在目录中创建libname.nimble(用实际名称替换libname)文件并使用nimble install。然后,您可以直接从任何其他项目导入该库中的*.nim个文件。使用nimble uninstall libname再次卸载库。
    4. 基本libname.nimble文件包含以下内容。

      [Package]
      name = "libname"
      author = "Your Name"
      version = "0.1"
      description = "Example library."
      license = "none"
      

答案 1 :(得分:3)

您基本上有两个选择:

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

  2. 您可以config/nim.cfgpath="$home/myModulePath"添加搜索路径。此文件还会告诉您Nim默认情况下Nim查找导入的方式/位置。

答案 2 :(得分:1)

nim dump命令会显示您路径中的内容。请查看advanced compiler options的文档。