我正试着用多个模块(在不同的文件中)编程。我不想以正确的顺序明确加载ì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
答案 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
。
这个答案比我计划的要长...