# Is it possible to load a subset of a package?

**URL:** https://discourse.julialang.org/t/is-it-possible-to-load-a-subset-of-a-package/31136
**Category:** General Usage
**Tags:** question
**Created:** [November 15, 2019, 8:01pm UTC](https://discourse.julialang.org/t/is-it-possible-to-load-a-subset-of-a-package/31136 "2019-11-15T20:01:39Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![StevenWhitaker](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stevenwhitaker/32/9749_2.png) [@StevenWhitaker](https://discourse.julialang.org/u/StevenWhitaker)
#### Post date: [November 15, 2019, 8:01pm UTC](https://discourse.julialang.org/t/is-it-possible-to-load-a-subset-of-a-package/31136/1 "2019-11-15T20:01:40Z")

</div>

I have run into issues with long loading times for using some of my custom packages, and it appears to be because those packages load a lot of dependencies (as suggested [here](https://discourse.julialang.org/t/very-slow-pre-compiling-and-using-of-custom-julia-package/24708/2)). But often my packages only need some small subset of the functionality provided by another package (e.g., I only need `gradient` from ForwardDiff).

So, I have two questions:

1. Is there a way to only load a subset of a package? (I.e., something like `using ForwardDiff: gradient`, but only load code related to `gradient` instead of loading everything in ForwardDiff.)
2. If so, how can I structure my package code to enable users to only load a subset of the functionality? Submodules?

Thanks in advance.

---

<div class="post-metadata">

### Author: ![BioTurboNick](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bioturbonick/32/6380_2.png) [@BioTurboNick](https://discourse.julialang.org/u/BioTurboNick)
#### Post date: [November 15, 2019, 8:09pm UTC](https://discourse.julialang.org/t/is-it-possible-to-load-a-subset-of-a-package/31136/2 "2019-11-15T20:09:44Z")

</div>

I know it is unable to load subsets, but someone else can say more on that. I think that’s why big projects like JuliaStats have separate packages for subsets of functionality?

I’ve used `Requires.jl` to dynamically load code based on other packages being loaded.

---

<div class="post-metadata">

### Author: ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)
#### Post date: [November 16, 2019, 6:20am UTC](https://discourse.julialang.org/t/is-it-possible-to-load-a-subset-of-a-package/31136/3 "2019-11-16T06:20:35Z")

</div>

1. AFAIK there is no such mechanism.

2. If a subset of a package makes sense as a self-contained unit of functionality, perhaps consider making it a package itself.

In the future you may be able to have multiple packages in a single repository:

[https://github.com/JuliaLang/Pkg.jl/issues/1251](https://github.com/JuliaLang/Pkg.jl/issues/1251)

but for now that is WIP.

---

<div class="post-metadata">

### Author: ![Amin\_Yahyaabadi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/amin_yahyaabadi/32/9826_2.png) [@Amin\_Yahyaabadi](https://discourse.julialang.org/u/Amin_Yahyaabadi)
#### Post date: [November 16, 2019, 9:02am UTC](https://discourse.julialang.org/t/is-it-possible-to-load-a-subset-of-a-package/31136/4 "2019-11-16T09:02:37Z")

</div>

I think we can write a macro that includes that subset of the code. Some kind of intelligent macro that parses the source code of the package and finds the dependencies of that subset and includes and evaluates it.

It is hard though 😁

Another approach is to make dynamic dlls using PackageCompiler.

---

<div class="post-metadata">

### Author: ![jeff.bezanson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jeff.bezanson/32/48_2.png) [@jeff.bezanson](https://discourse.julialang.org/u/jeff.bezanson)
#### Post date: [November 21, 2019, 2:25am UTC](https://discourse.julialang.org/t/is-it-possible-to-load-a-subset-of-a-package/31136/5 "2019-11-21T02:25:07Z")

</div>

Yes, exactly this. I think developing multiple packages in one repository is the best solution. Packages are the mechanism for identifying/naming a chunk of code to either load or not. In that sense loading part of a package is kind of a contradiction in terms — the part you’re loading is itself a package by definition.

---

<div class="post-metadata">

### Author: ![Amin\_Yahyaabadi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/amin_yahyaabadi/32/9826_2.png) [@Amin\_Yahyaabadi](https://discourse.julialang.org/u/Amin_Yahyaabadi)
#### Post date: [March 25, 2020, 11:51pm UTC](https://discourse.julialang.org/t/is-it-possible-to-load-a-subset-of-a-package/31136/6 "2020-03-25T23:51:21Z")

</div>

Related issue:

[https://github.com/JuliaLang/julia/issues/33670](https://github.com/JuliaLang/julia/issues/33670)
