# How to import from indirect dependency to package extension

**URL:** <https://discourse.julialang.org/t/how-to-import-from-indirect-dependency-to-package-extension/123031>\
**Category:** General Usage\
**Created:** [November 24, 2024, 11:16pm UTC](https://discourse.julialang.org/t/how-to-import-from-indirect-dependency-to-package-extension/123031 "2024-11-24T23:16:59Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![putianyi888](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/putianyi888/32/32279_2.png) [@putianyi888](https://discourse.julialang.org/u/putianyi888)\
**Post date:** [November 24, 2024, 11:16pm UTC](https://discourse.julialang.org/t/how-to-import-from-indirect-dependency-to-package-extension/123031/1 "2024-11-24T23:16:59Z")

</div>

I’m writing a package extension, say `ABExt.jl`, where `A` and `B` are package names. `B` depends on `C`, `fc` is a method defined by `C` and not imported by `B`. I’d like to import `fc` to `ABExt`. I have two attempts so far:

- `import B: fc` throws `WARNING: could not import B.fc into ABExt`
- `import C: fc` throws `ArgumentError: Package ABExt does not have C in its dependencies`

---

<div class="post-metadata">

**Author:** ![gdalle](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gdalle/32/27854_2.png) [@gdalle](https://discourse.julialang.org/u/gdalle)\
**Post date:** [November 25, 2024, 7:39am UTC](https://discourse.julialang.org/t/how-to-import-from-indirect-dependency-to-package-extension/123031/2 "2024-11-25T07:39:17Z")

</div>

You should make the extension depend on both B and C:

```julia
[extensions]
ABExt = ["B", "C"]

```

---

<div class="post-metadata">

**Author:** ![putianyi888](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/putianyi888/32/32279_2.png) [@putianyi888](https://discourse.julialang.org/u/putianyi888)\
**Post date:** [November 25, 2024, 8:35am UTC](https://discourse.julialang.org/t/how-to-import-from-indirect-dependency-to-package-extension/123031/3 "2024-11-25T08:35:49Z")

</div>

Thanks for your help. Now I’m getting `LoadError: KeyError: key "C" not found`. Do you have a working example?

---

<div class="post-metadata">

**Author:** ![gdalle](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gdalle/32/27854_2.png) [@gdalle](https://discourse.julialang.org/u/gdalle)\
**Post date:** [November 25, 2024, 8:47am UTC](https://discourse.julialang.org/t/how-to-import-from-indirect-dependency-to-package-extension/123031/4 "2024-11-25T08:47:21Z")

</div>

In my package DifferentiationInterface.jl, the Zygote extension also depends explicitly on ForwardDiff, even though ForwardDiff is a dependency of Zygote too:

> <https://github.com/JuliaDiff/DifferentiationInterface.jl/blob/cc8818a2bb0fb3dab2abf29ba213f89213a8613a/DifferentiationInterface/Project.toml#L44>

This allows me to do `import ForwardDiff` in the extension instead of `import Zygote.ForwardDiff`

---

<div class="post-metadata">

**Author:** ![putianyi888](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/putianyi888/32/32279_2.png) [@putianyi888](https://discourse.julialang.org/u/putianyi888)\
**Post date:** [November 25, 2024, 10:28am UTC](https://discourse.julialang.org/t/how-to-import-from-indirect-dependency-to-package-extension/123031/5 "2024-11-25T10:28:31Z")

</div>

Very helpful. It turns out that I also have to add `C` to `weakdeps`.
