# Pkg.add("PyPlot@2.9.0"); is not a valid package name

**URL:** <https://discourse.julialang.org/t/pkg-add-pyplot-2-9-0-is-not-a-valid-package-name/60228>\
**Category:** General Usage\
**Tags:** package\
**Created:** [April 29, 2021, 8:57am UTC](https://discourse.julialang.org/t/pkg-add-pyplot-2-9-0-is-not-a-valid-package-name/60228 "2021-04-29T08:57:31Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![jcabrera](https://avatars.discourse-cdn.com/v4/letter/j/b9e5f3/32.png) [@jcabrera](https://discourse.julialang.org/u/jcabrera)\
**Post date:** [April 29, 2021, 8:57am UTC](https://discourse.julialang.org/t/pkg-add-pyplot-2-9-0-is-not-a-valid-package-name/60228/1 "2021-04-29T08:57:31Z")

</div>

hi there,

I’m using a command line to install packages. I have a problem when I want to fix the version.  
In the doc:  
[https://pkgdocs.julialang.org/v1/managing-packages/](https://pkgdocs.julialang.org/v1/managing-packages/)  
It is said that I can use `@version`, `#branchname` (or `#commitSHA1` )

```julia
pkg> add Example@0.4
pkg> add Example#master

```

This command works fine for me

```julia
julia --project=/opt/julia/share/julia/environments/v1.6 -e 'ENV["PYTHON"]="/opt/jupyterhub/bin/python"; empty!(DEPOT_PATH); push!(DEPOT_PATH,"/opt/julia/share/julia"); using Pkg; Pkg.add("PyPlot"); Pkg.precompile()'

julia --project=/opt/julia/share/julia/environments/v1.6 -e 'using Pkg; Pkg.status("PyPlot")'
      Status `/opt/julia/share/julia/environments/v1.6/Project.toml`
  [d330b81b] PyPlot v2.9.0

julia --project=/opt/julia/share/julia/environments/v1.6 -e 'using Pkg; Pkg.rm("PyPlot")'

```

But adding version it does not work:

```julia
julia --project=/opt/julia/share/julia/environments/v1.6 -e 'ENV["PYTHON"]="/opt/jupyterhub/bin/python"; empty!(DEPOT_PATH); push!(DEPOT_PATH,"/opt/julia/share/julia"); using Pkg; Pkg.add("PyPlot@2.9.0"); Pkg.precompile()'
ERROR: `PyPlot@2.9.0` is not a valid package name

julia --project=/opt/julia/share/julia/environments/v1.6 -e 'ENV["PYTHON"]="/opt/jupyterhub/bin/python"; empty!(DEPOT_PATH); push!(DEPOT_PATH,"/opt/julia/share/julia"); using Pkg; Pkg.add("PyPlot#d330b81b"); Pkg.precompile()'
ERROR: `PyPlot#d330b81b` is not a valid package name

```

Can somebody help me on this?

```julia
julia --version
julia version 1.6.0

```

---

<div class="post-metadata">

**Author:** ![fredrikekre](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/fredrikekre/32/1688_2.png) [@fredrikekre](https://discourse.julialang.org/u/fredrikekre)\
**Post date:** [April 29, 2021, 8:59am UTC](https://discourse.julialang.org/t/pkg-add-pyplot-2-9-0-is-not-a-valid-package-name/60228/2 "2021-04-29T08:59:48Z")

</div>

You need to use a `PackageSpec`, see [12. API Reference · Pkg.jl](https://pkgdocs.julialang.org/v1/api/#Package-API-Reference).

You might also find [`jlpkg`](https://github.com/fredrikekre/jlpkg) useful.

---

<div class="post-metadata">

**Author:** ![jcabrera](https://avatars.discourse-cdn.com/v4/letter/j/b9e5f3/32.png) [@jcabrera](https://discourse.julialang.org/u/jcabrera)\
**Post date:** [April 29, 2021, 9:08am UTC](https://discourse.julialang.org/t/pkg-add-pyplot-2-9-0-is-not-a-valid-package-name/60228/3 "2021-04-29T09:08:05Z")

</div>

Thanks, now it works. I will take a look at your code.

```julia
julia --project=/opt/julia/share/julia/environments/v1.6 -e 'ENV["PYTHON"]="/opt/jupyterhub/bin/python"; empty!(DEPOT_PATH); push!(DEPOT_PATH,"/opt/julia/share/julia"); using Pkg; Pkg.add(PackageSpec(name="PyPlot", version="2.9.0")); Pkg.precompile()'

```
