如何在一个项目中使用未在网上注册的包中的函数

想要运行一个github上的代码:Software.SEG2021/WavefieldRecoveryUQ.jl at main · slimgroup/Software.SEG2021 · GitHub
运行WavefieldRecoveryUQ的test_hint_interpolation.ji 产生错误ERROR: LoadError: UndefVarError: put_params! not defined
发现put_params!这个函数在github上存在:ConditionalNFs4Imaging.jl/put_param.jl at main · slimgroup/ConditionalNFs4Imaging.jl · GitHub

但是包ConditionalNFs4Imaging未在网上注册,请问如何使用?

1 个赞

已经尝试使用


将其下载到了本地

然后使用
PJ49F)@(QT$J6_6}R4HJ@EM
找到了ConditionalNFs4Imaging的uuid

将其添加到了project里面

然后在项目WavefieldRecoveryUQ中添加包ConditionalNFs4Imaging


还是报同样的错

直接

]add https://github.com/slimgroup/ConditionalNFs4Imaging.jl

不行吗


不行

脚本执行错误,直接问仓库作者更方便 :joy:


补充:
很欢迎参与论坛交流,社区对新人相对包容,也请务必学习交流的礼仪规范

你可以尝试学长下边贴的方法,不行就等作者回复。我也怀疑这个提问有X-Y问题的倾向,容易做无用功,也容易让别人做无用功。所以建议直接提 issue,毕竟代码作者对细节更清楚。

近期经常看你在 Q 群询问这个脚本问题,我便代你写了个 issue,但这绝非义务。既然在用 GitHub 了,就应该适应这种交流方式,不要担心犯错,但请注意吸取经验。此外推荐谷歌翻译和 Grammarly 这两个实用插件。

下面这一系列的前提都在于 确实是缺少 ConditionalNFs4Imaging.jl 这个包的假设出发的。尽管我对此保持怀疑:put_params! 看起来像是一个非常普遍的函数名。


git clone https://github.com/slimgroup/Software.SEG2021.git
git clone https://github.com/slimgroup/ConditionalNFs4Imaging.jl.git

然后给 ConditionalNFs4Imaging.jl/Project.toml 文件补上 uuid 让它成为一个合法的 package, 比如说:

  name = "ConditionalNFs4Imaging"
+ uuid = "5160f321-d055-4d1d-a174-f9960ec09453"
  authors = ["Ali Siahkoohi"]

接着在 WavefieldRecovertyUQ 中 dev 这个包:

cd Software.SEG2021/WavefieldRecoveryUQ.jl/
julia --project=. 'using Pkg; Pkg.develop(path="../../ConditionalNFs4Imaging.jl")'

再接下来怎么搞以及这个代码能否成功运行我就不知道了. 因为这些代码的依赖太多了,这中间可能还存在其他的问题。


如果实在不行,也可以再尝试问一下原作者,更新一下信息或者版本或者之类的。它自己的文档上好像说有一个私有注册表,不太清楚是不是和这个有关:Software.SEG2021/WavefieldRecoveryUQ.jl at main · slimgroup/Software.SEG2021 · GitHub

好的好的感谢感谢

感谢 还是不行 说查不到文件或者目录

我可能能找到了解决的办法 有这个需要的同学可以和我讨论
先通过git将其下载到本地

然后再E:\Julia1\Software.SEG2021\WavefieldRecoveryUQ.jl\src\WavefieldRecoveryUQ.jl中include
put_param的路径

这样可以,恭喜解决。应该也可以通过改变 DEPOT_PATH 的方式应用 ConditionalNFs4Imaging.jl 在本地,然后直接 export

请问能举个例子吗

请问可以举个例子吗

我谈一下我的土法:
1 创建个目录比如 d:/a1,
2 etc/julia/startup.jl 里面,添加 push!(LOAD_PATH, “d:/a1” )
3 把 ConditionalNFs4Imaging 解包到 d:/a1 为 d:/a1/ConditionalNFs4Imaging
4 using ConditionalNFs4Imaging
5 看看 put_params! 可以用不。

2 个赞

其实很简单,假定有一个文件A.jl内容为

module Test
function A()
    println("Hello, world!")
end
end

B.jl中调用这个模块,可以直接

include("A.jl")
LIB = Main.Test
LIB.A()

效果为

PS C:\Users\mrs504aa\Desktop> julia .\B.jl
Hello, world!

好的感谢 我试试看