错误:无法从URL或路径确定包名称

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了错误:无法从URL或路径确定包名称相关的知识,希望对你有一定的参考价值。

我有一个回购,其名称不是标准的Julia模块名称,比如git@github.com:ylxdzsw/oh-my-julia.jl.git

我曾经通过Pkg.clone("git@github.com:ylxdzsw/oh-my-julia.jl.git", "OhMyJulia")开发和使用它,效果很好。但是,它已被弃用,并且在Julia 0.7中克隆包的等效方法是使用] dev git@github.com:ylxdzsw/oh-my-julia.jl.git,但是我应该在哪里指定包名?

(v0.7) pkg> dev git@github.com:ylxdzsw/oh-my-julia.jl.git OhMyJulia
  Updating registry at `~/.julia/registries/General`
  Updating git-repo `https://github.com/JuliaRegistries/General.git`
  Updating git-repo `git@github.com:ylxdzsw/oh-my-julia.jl.git`
ERROR: cannot determine package name from URL or path: git@github.com:ylxdzsw/oh-my-julia.jl.git

julia> using Pkg

julia> Pkg.develop(PackageSpec(url="git@github.com:ylxdzsw/oh-my-julia.jl.git", name="OhMyJulia"))
  Updating git-repo `git@github.com:ylxdzsw/oh-my-julia.jl.git`
ERROR: cannot determine package name from URL or path: git@github.com:ylxdzsw/oh-my-julia.jl.git
Stacktrace:
 [1] pkgerror(::String) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v0.7/Pkg/src/Types.jl:120
 [2] parse_package!(::Pkg.Types.Context, ::Pkg.Types.PackageSpec, ::String) at ./logging.jl:313
 [3] (::getfield(Pkg.Types, Symbol("##25#28")){Pkg.Types.Context,Array{Pkg.Types.PackageSpec,1},String})(::LibGit2.CachedCredentials) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v0.7/Pkg/src/Types.jl:567
 [4] shred!(::getfield(Pkg.Types, Symbol("##25#28")){Pkg.Types.Context,Array{Pkg.Types.PackageSpec,1},String}, ::LibGit2.CachedCredentials) at ./secretbuffer.jl:184
 [5] handle_repos_develop! at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v0.7/Pkg/src/Types.jl:498 [inlined]
 [6] #add_or_develop#13(::Symbol, ::Bool, ::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::Function, ::Pkg.Types.Context, ::Array{Pkg.Types.PackageSpec,1}) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v0.7/Pkg/src/API.jl:52
 [7] #add_or_develop at ./none:0 [inlined]
 [8] #add_or_develop#12 at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v0.7/Pkg/src/API.jl:29 [inlined]
 [9] #add_or_develop at ./none:0 [inlined]
 [10] #add_or_develop#10(::Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:mode, :shared),Tuple{Symbol,Bool}}}, ::Function, ::Pkg.Types.PackageSpec) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v0.7/Pkg/src/API.jl:27
 [11] #add_or_develop at ./none:0 [inlined]
 [12] #develop#19 at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v0.7/Pkg/src/API.jl:70 [inlined]
 [13] develop(::Pkg.Types.PackageSpec) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v0.7/Pkg/src/API.jl:70
 [14] top-level scope at none:0
答案

如果你已经提供了name,似乎丢弃了url。 Julia尝试解析项目的URL以提取名称。但是,您使用破折号(-)应该是包名称。这最终会产生错误,因为julia中的类型不能在字符之间划线,因为它是一个运算符。

您可以通过使用正确的Project.toml条目为包的根目录创建项目文件(即name)来指定包的名称。

另一个简单的解决方案是将存储库的名称更改为OhMyJulia而不使用破折号,因此可以从提供的URL确定名称。但是你应该添加Project.toml文件,这是指定包属性的正确方法(否则你不能在包含项目文件的另一个项目中使用你的项目)

见:https://docs.julialang.org/en/v1/stdlib/Pkg/

以上是关于错误:无法从URL或路径确定包名称的主要内容,如果未能解决你的问题,请参考以下文章

Python - 模块

无法从角度路由器获取路径或 url

无法从角度路由器获取路径或URL

如何生成URL?

无法确定合适的驱动程序类弹簧

npm : 无法将“npm”项识别为 cmdlet函数脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。