我正试着用多个模块(在不同的文件中)编程。我不想以正确的顺序显式地加载带有ìnclude的文件。
我使用Atom IDE作为我的开发平台,所以我不会显式地运行julia。
当我只使用importall Datastructures ( ModuleName是模块的名称)时,朱莉娅抱怨道:
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发布于 2017-10-24 22:46:22
在julia中有两种构建包或模块的方法:
1)使用PkgDev中的工具。你可以用Pkg.add("PkgDev") ; using PkgDev得到它们。现在,您可以使用PkgDev.generate("MyPackageName", "MIT") (或任何您喜欢的许可)来构建包文件夹。默认情况下,julia将在与其他所有外部包相同的目录中构建此文件夹。在Linux上,这将是~/.julia/v0.6/ (或您正在运行的任何版本)。此外,默认情况下,该文件夹将位于朱莉娅路径上,因此您只需在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结束。然后,将您想要的任何东西放在中间(如果您愿意的话,包括对src目录中其他文件的src调用)。
最后一步是确保朱莉娅能找到MyPackageName。要做到这一点,您将需要~/MyCode在朱莉娅路径上。要做到这一点,请使用:push!(LOAD_PATH, "~/MyCode")或push!(LOAD_PATH, "~/MyCode/MyPackageName")。
也许您不想每次访问MyPackageName时都运行这个命令。没问题,您只需要将这一行添加到您的.juliarc.jl文件中,它在每次启动julia时都会自动运行。在Linux上,.juliarc.jl文件应该位于您的主目录中,即~/.juliarc.jl。如果没有,您只需创建它并将任何您想要的代码放入其中。如果你是在另一个操作系统上,你必须谷歌谷歌你的.juliarc.jl放在哪里。
这个答案比我计划的要长..。
https://stackoverflow.com/questions/46916624
复制相似问题