从路径

时间:2017-10-24 17:30:30

标签: julia

我正试着用多个模块(在不同的文件中)编程。我不想以正确的顺序明确加载ìnclude的文件。

我使用的是Atom IDE作为我的开发平台,所以我没有明确地运行julia。

当我刚刚使用importall Datastructures(其中ModuleName是模块的名称)时,julia抱怨道:

LoadError: ArgumentError: Module Datastructures not found in current path.
Run `Pkg.add("Datastructures")` to install the Datastructures package.
while loading F:\dev\ai\Interpreter.jl, in expression starting on line 8

1 个答案:

答案 0 :(得分:3)

有两种方法可以在julia中构建包或模块:

1)使用PkgDev中的工具。您可以使用Pkg.add("PkgDev") ; using PkgDev获取它们。现在,您可以使用PkgDev.generate("MyPackageName", "MIT")(或您喜欢的任何许可证)来构建包文件夹。默认情况下,julia将在与所有其他外部包相同的目录中构建此文件夹。在Linux上,这将~/.julia/v0.6/(或您正在运行的任何版本)。此外,默认情况下,此文件夹将位于julia路径上,因此您只需在REPL中键入using MyPackageName即可加载它。

请注意,julia实际上是通过查找文件~/.julia/v0.6/MyPackageName/src/MyPackageName.jl然后运行它来加载包。如果您的模块包含多个文件,则应将所有文件放在~/.julia/v0.6/MyPackageName/src/目录中,然后在MyPackageName.jl文件中添加一行代码include("MyOtherFileOfCode.jl")

2)如果由于某种原因您不想将包裹保存在~/.julia/v0.6/中,或者您不想使用PkgDev.generate()构建包裹,那么您当然可以自己设置文件。

假设您希望MyPackageName存储在~/MyCode目录中。首先,创建目录~/MyCode/MyPackageName/。在这个目录中,我强烈建议使用julia和github使用的相同结构,即将所有代码存储在名为~/MyCode/MyPackageName/src/的目录中。

至少,您需要一个名为~/MyCode/MyPackageName/src/MyPackageName.jl的目录中的文件(就像上面的方法一样)。此文件应以module MyPackageName开头,并以end结束。然后,如果您愿意,可以将您想要的任何内容(包括include调用)放到src目录中的其他文件中。

最后一步是确保julia能找到MyPackageName。要做到这一点,您需要~/MyCode在julia路径上。为此,请使用:push!(LOAD_PATH, "~/MyCode")push!(LOAD_PATH, "~/MyCode/MyPackageName")

也许您不希望每次要访问MyPackageName时都要运行此命令。没问题,您只需将此行添加到.juliarc.jl文件中,该文件会在您每次启动julia时自动运行。在Linux上,您的.juliarc.jl文件应位于您的主目录中,即~/.juliarc.jl。如果不存在,您可以创建它并在其中放置您想要的任何代码。如果您使用的是其他操作系统,则必须谷歌在哪里放置.juliarc.jl

这个答案比我计划的要长...