# Is there a way to pass a list of packages to \`using\` in a similar way as \`Pkg.add()\`

**URL:** <https://discourse.julialang.org/t/is-there-a-way-to-pass-a-list-of-packages-to-using-in-a-similar-way-as-pkg-add/90012>\
**Category:** General Usage\
**Tags:** pkg\
**Created:** [November 9, 2022, 11:28pm UTC](https://discourse.julialang.org/t/is-there-a-way-to-pass-a-list-of-packages-to-using-in-a-similar-way-as-pkg-add/90012 "2022-11-09T23:28:55Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![alex-s-gardner](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alex-s-gardner/32/30210_2.png) [@alex-s-gardner](https://discourse.julialang.org/u/alex-s-gardner)\
**Post date:** [November 9, 2022, 11:28pm UTC](https://discourse.julialang.org/t/is-there-a-way-to-pass-a-list-of-packages-to-using-in-a-similar-way-as-pkg-add/90012/1 "2022-11-09T23:28:55Z")

</div>

Is there a way to pass a list of packages to `using` in a similar way as `Pkg.add()` ?

This works:

```julia
package_names = ["DateFormats", "Statistics"] 
using Pkg 
Pkg.add(package_names)

```

but I can’t do this  
`using(package_names)`  
or this  
`using.(package_names)`

---

<div class="post-metadata">

**Author:** ![rafael.guerra](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rafael.guerra/32/216610_2.png) [@rafael.guerra](https://discourse.julialang.org/u/rafael.guerra)\
**Post date:** [November 9, 2022, 11:44pm UTC](https://discourse.julialang.org/t/is-there-a-way-to-pass-a-list-of-packages-to-using-in-a-similar-way-as-pkg-add/90012/2 "2022-11-09T23:44:44Z")

</div>

I found somewhere the following code to include in the `startup.jl` file:

```julia
import Pkg
package_names = ["DateFormats", "Statistics"] 
for pkg in package_names
    if Base.find_package(pkg) === nothing
       Pkg.add(pkg)
    end
    @eval using $(Symbol(pkg))
end
```

---

<div class="post-metadata">

**Author:** ![alex-s-gardner](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alex-s-gardner/32/30210_2.png) [@alex-s-gardner](https://discourse.julialang.org/u/alex-s-gardner)\
**Post date:** [November 9, 2022, 11:51pm UTC](https://discourse.julialang.org/t/is-there-a-way-to-pass-a-list-of-packages-to-using-in-a-similar-way-as-pkg-add/90012/3 "2022-11-09T23:51:00Z")

</div>

I wonder if there any disadvantages to allowing `using` to accept a vector of package names like `Pkg.add()`

---

<div class="post-metadata">

**Author:** ![giordano](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/giordano/32/2166_2.png) [@giordano](https://discourse.julialang.org/u/giordano)\
**Post date:** [November 10, 2022, 12:48am UTC](https://discourse.julialang.org/t/is-there-a-way-to-pass-a-list-of-packages-to-using-in-a-similar-way-as-pkg-add/90012/4 "2022-11-10T00:48:53Z")

</div>

Yes, you’d have to change the parser. `using` is a keyword, not a regular function for which you can just add a new method.

---

<div class="post-metadata">

**Author:** ![alex-s-gardner](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alex-s-gardner/32/30210_2.png) [@alex-s-gardner](https://discourse.julialang.org/u/alex-s-gardner)\
**Post date:** [November 10, 2022, 1:31am UTC](https://discourse.julialang.org/t/is-there-a-way-to-pass-a-list-of-packages-to-using-in-a-similar-way-as-pkg-add/90012/5 "2022-11-10T01:31:11Z")

</div>

Is there a function equivalent for `using` of is that not possible?

---

<div class="post-metadata">

**Author:** ![Mason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mason/32/2423_2.png) [@Mason](https://discourse.julialang.org/u/Mason)\
**Post date:** [November 10, 2022, 2:41am UTC](https://discourse.julialang.org/t/is-there-a-way-to-pass-a-list-of-packages-to-using-in-a-similar-way-as-pkg-add/90012/6 "2022-11-10T02:41:32Z")

</div>

No, but you can easily make one:

```julia
_using(x::Union{String, Symbol}) = @eval using $(Symbol(x))

```

---

<div class="post-metadata">

**Author:** ![liamfdoherty](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/liamfdoherty/32/24516_2.png) [@liamfdoherty](https://discourse.julialang.org/u/liamfdoherty)\
**Post date:** [November 10, 2022, 2:53am UTC](https://discourse.julialang.org/t/is-there-a-way-to-pass-a-list-of-packages-to-using-in-a-similar-way-as-pkg-add/90012/7 "2022-11-10T02:53:40Z")

</div>

I might be missing something, but why not just

```julia
using DateFormats, Statistics

```

i.e., by separating the packages by commas?

---

<div class="post-metadata">

**Author:** ![alex-s-gardner](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alex-s-gardner/32/30210_2.png) [@alex-s-gardner](https://discourse.julialang.org/u/alex-s-gardner)\
**Post date:** [November 10, 2022, 5:47am UTC](https://discourse.julialang.org/t/is-there-a-way-to-pass-a-list-of-packages-to-using-in-a-similar-way-as-pkg-add/90012/8 "2022-11-10T05:47:56Z")

</div>

The issue is that it would be nice to be able to pass list of package names to both `Pkg.add()` and `using`… separating by commas still requires manual entry. I have scripts that I move between machines so I am always `adding` and `using`… The solutions above are great… I would think that this functionality would be good to bad in `Base`

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [November 10, 2022, 6:31am UTC](https://discourse.julialang.org/t/is-there-a-way-to-pass-a-list-of-packages-to-using-in-a-similar-way-as-pkg-add/90012/9 "2022-11-10T06:31:51Z")

</div>

It feels like you should be instantiating a manifest rather than passing around vectors of package names? (doesn’t solve the using point though just to be clear)
