【问题标题】:Error while trying to install custom package on Julia尝试在 Julia 上安装自定义包时出错
【发布时间】:2022-01-21 23:56:52
【问题描述】:

我正在尝试使用命令Pkg.add(PackageSpec(path = "")) 在 Julia 中安装自定义包,该命令位于我的本地目录中。我使用Julia documentation 创建了我的包。但是每次当我尝试使用本地路径中的PackageSpec 安装我的自定义包时,它都会引发错误。以下错误是 -

Cloning git-repo `D:\df_sql\src\df_sql.jl`
ERROR: failed to clone from D:\df_sql\src\df_sql.jl, error: GitError(Code:ERROR, Class:Net, failed to resolve address for D: No such host is known. )
Stacktrace:
 [1] pkgerror(::String) at C:\cygwin\home\Administrator\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.0\Pkg\src\Types.jl:120
 [2] #clone#2(::Nothing, ::Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:isbare, :credentials),Tuple{Bool,LibGit2.CachedCredentials}}}, ::Function, ::String, ::String) at C:\cygwin\home\Administrator\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.0\Pkg\src\GitTools.jl:107
 [3] #handle_repos_add!#32(::Bool, ::Nothing, ::Function, ::Pkg.Types.Context, ::Array{Pkg.Types.PackageSpec,1}) at .\none:0
 [4] #handle_repos_add! at .\none:0 [inlined]
 [5] #add_or_develop#15(::Symbol, ::Bool, ::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::Function, ::Pkg.Types.Context, ::Array{Pkg.Types.PackageSpec,1}) at C:\cygwin\home\Administrator\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.0\Pkg\src\API.jl:59
 [6] #add_or_develop#14 at .\none:0 [inlined]
 [7] #add_or_develop at .\none:0 [inlined]
 [8] #add_or_develop#10 at C:\cygwin\home\Administrator\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.0\Pkg\src\API.jl:32 [inlined]
 [9] #add_or_develop at .\none:0 [inlined]
 [10] #add#20 at C:\cygwin\home\Administrator\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.0\Pkg\src\API.jl:74 [inlined]
 [11] add(::Pkg.Types.PackageSpec) at C:\cygwin\home\Administrator\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.0\Pkg\src\API.jl:74
 [12] top-level scope at none:0

我的项目结构是-

我使用的是 Julia 版本 1.6.0 知道如何解决这个问题!!!

【问题讨论】:

  • 嘿,你能指定你试图运行什么命令来安装包吗?你想在哪里安装它?
  • Pkg.add()。我正在尝试将它安装在我的本地机器 julia 中。

标签: package julia


【解决方案1】:

我相信您需要在该文件夹中有一个初始化的 Git 存储库才能将其添加为一个包。以下是我获取可以在 Julia 本地安装的软件包的步骤:

  1. 设置
using Pkg
Pkg.generate("MyPackage")
open("MyPackage/src/MyPackage.jl","w") do f
    println(f, """
module MyPackage
foo(what) = println("Hello " * what)
export foo
end
    """)
end
  1. ;进入命令行shell模式:
shell> cd MyPackage

shell> git init

shell> git add *

shell> git commit -m init

shell> cd ..
  1. 现在您可以安装软件包了
julia> Pkg.add(path="MyPackage")
     Cloning git-repo `C:\temp\MyP\MyPackage`
    Updating git-repo `C:\temp\MyP\MyPackage`
    Updating registry at `C:\JuliaPkg\Julia-1.7.0\registries\General.toml`
   Resolving package versions...
    Updating `C:\JuliaPkg\Julia-1.7.0\environments\v1.7\Project.toml`
  [7e0d665f] + MyPackage v0.1.0 `..\..\..\..\temp\MyP\MyPackage#master`
    Updating `C:\JuliaPkg\Julia-1.7.0\environments\v1.7\Manifest.toml`
  [7e0d665f] + MyPackage v0.1.0 `..\..\..\..\temp\MyP\MyPackage#master`
Precompiling project...
  1 dependency successfully precompiled in 5 seconds (316 already precompiled)
  1. 软件包已安装,可以使用
julia> using MyPackage

julia> foo("world")
Hello world

注意

您可以通过使用Pkg.develop 来避免初始化 Git 存储库,在上述说明的第 1 步之后,您可以这样做:

julia> Pkg.develop(path="MyPackage")
   Resolving package versions...
    Updating `C:\JuliaPkg\Julia-1.7.0\environments\v1.7\Project.toml`
  [7e0d665f] + MyPackage v0.1.0 `..\..\..\..\temp\MyP\MyPackage`
    Updating `C:\JuliaPkg\Julia-1.7.0\environments\v1.7\Manifest.toml`
  [7e0d665f] + MyPackage v0.1.0 `..\..\..\..\temp\MyP\MyPackage`

julia> using MyPackage
[ Info: Precompiling MyPackage [7e0d665f-f51f-4097-93d9-367fa446d15a]

julia> foo("world")
Hello world

【讨论】:

  • 使用 Pk.develop 给出错误 - 错误:在 //media//sourodip//Data//df_sql//src 的包中找不到项目文件,可能需要指定 subdir
  • 您需要小心文件夹。如果您完全按照我的示例运行它,它将起作用(我测试了此代码)。 Pkg.develop 需要在您的包文件夹的父文件夹中运行(请参阅我的示例)
  • 对不起,我的错误文件名丢失了,但在提供正确的文件后现在面临另一个问题。错误:开发路径//media//sourodip//Data//df_sql//src//df_sql.jl 是文件,但需要目录。
  • 您好,请仔细查看我的代码 - 也许先尝试完全运行我的代码?您应该提供文件夹名而不是文件名
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-18
  • 1970-01-01
  • 2021-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-28
相关资源
最近更新 更多