错误:无法从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或路径确定包名称的主要内容,如果未能解决你的问题,请参考以下文章
npm : 无法将“npm”项识别为 cmdlet函数脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。