【问题标题】:Why can't I add a package (module) I created in Julia?为什么我不能添加我在 Julia 中创建的包(模块)?
【发布时间】:2021-09-21 05:49:56
【问题描述】:

我在安装我在 Julia 中创建的模块时遇到问题。我在 Visual Studio Code 下运行 Julia 插件。如果我使用 Ctrl+F5 运行下面的文件,我会收到一条消息

ERROR: LoadError: ArgumentError: Package Utils not found in current path:
- Run `import Pkg; Pkg.add("Utils")` to install the Utils package.

这是文件:

module demo

using Utils

greet() = print("Hello World!")

end # module

如果我按照错误消息中的建议进行操作,我会收到另一条错误消息:

ERROR: LoadError: The following package names could not be resolved:
 * Utils (not found in project, manifest or registry)

我也尝试插入这一行:

import Pkg; Pkg.add(path="C:/Dropbox/Code/Julia/demo/src/Utils.jl")

并收到此消息(尽管路径肯定存在):

ERROR: LoadError: Path `C:/Dropbox/Code/Julia/demo/src/Utils.jl` does not exist.

demo.jlUtils.jl 文件位于 C:\Dropbox\Code\Julia\demo\src\ 中,demo 项目已被激活,如 REPL 中所示。操作系统为 Windows 10 Pro。

任何帮助将不胜感激。尝试完成这项工作浪费了很多时间。

【问题讨论】:

    标签: visual-studio-code package julia


    【解决方案1】:

    模块和包不是一回事。简而言之,包是模块加上一组元数据,可以很容易地找到包并与其他包进行良好的交互。有关编写 Julia 包的教程,请参见此处: https://syl1.gitbook.io/julia-language-a-concise-tutorial/language-core/11-developing-julia-packages

    在您的情况下,如果您想加载本地模块,只需输入include("fileWhereThereIsTheModule.jl"),然后输入using Main.MyModuleusing .MyModule。注意点...没有它,Julia 确实会寻找一个包并让它找到您的 DemoUtil 模块,您必须更改环境变量或将模块文件放在某些预定义文件夹中。使用include 后跟模块的“绝对或相对位置”,您也不必这样做。

    【讨论】:

    • 非常感谢。完美运行。但我很困惑,因为我在尝试不同的事情的同时设法让两个模块工作。我不能重复这个过程,它不包括你的两个建议中的任何一个。我今天又试了一次,成功了一次,第三次尝试了,不管我尝试了多少东西,都失败了。所以,正如你所说,还有另一种方法。我注意到我安装的包没有出现在 Project.toml 或 Manifest.toml 中。所以我会阅读你建议的材料,也许我会明白。再次感谢。
    • 我看了你建议的教程。它很有用,但我无法完全理解。这似乎与您的建议相矛盾:'注意:使用和导入,当它们后跟 Main.x 或 .x 时,查找已加载的模块并将其及其导出的对象带入范围(仅用于导入明确指定的对象) .否则,他们会做完全不同的工作:他们需要一个包,并且包系统会查找嵌入在包 x' 中的模块 x 的正确版本。按照您的建议导入的包既没有加载也没有在任何包中。
    • 我不明白为什么这两个矛盾。您是想构建一个模块还是整个包?对于一个包,您需要提供一定的文件夹结构和Project.toml 文件,而对于一个模块,您只需编写包含模块内容的文件..您也可以将多个模块放在同一个文件中......include 将已经在给定文件中“加载”了模块,但是您需要使用usingimport..
    • 你是对的。我的错。
    • 我现在正在尝试从 Github 添加 Indicators.jl。所以我做了add Indicators。它没有用,并告诉我做Pkg.precompile()。一个依赖项没有预编译,可能是由于include 语句:Failed to precompile demo [a6a479a7-4f43-4bd5-b6d9-b84bd8e9cf8a] to C:\Users\fsald\.julia\compiled\v1.6\demo\jl_16C4.tmp. ERROR: LoadError: UndefVarError: include not definedinclude 是“有罪”吗?
    猜你喜欢
    • 2021-10-20
    • 2020-10-17
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 2017-09-23
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    相关资源
    最近更新 更多