# A startup.jl for packages

**URL:** <https://discourse.julialang.org/t/a-startup-jl-for-packages/16297>\
**Category:** General Usage\
**Created:** [October 14, 2018, 1:22am UTC](https://discourse.julialang.org/t/a-startup-jl-for-packages/16297 "2018-10-14T01:22:43Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![sswatson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sswatson/32/5135_2.png) [@sswatson](https://discourse.julialang.org/u/sswatson)\
**Post date:** [October 14, 2018, 1:22am UTC](https://discourse.julialang.org/t/a-startup-jl-for-packages/16297/1 "2018-10-14T01:22:43Z")

</div>

Suppose that you want to run some custom initialization code whenever a particular package is loaded. For example, perhaps you want to configure some display options for a plotting package.

The best solution I can think of is to define a function in startup.jl that uses `@eval` to load the package and run the initialization code. Is there a better way?

---

<div class="post-metadata">

**Author:** ![cstjean](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cstjean/32/1444_2.png) [@cstjean](https://discourse.julialang.org/u/cstjean)\
**Post date:** [October 14, 2018, 1:48am UTC](https://discourse.julialang.org/t/a-startup-jl-for-packages/16297/2 "2018-10-14T01:48:15Z")

</div>

> [@sswatson](#):
>
> Suppose that you want to run some custom initialization code whenever a particular package is loaded.

Requires.jl?

---

<div class="post-metadata">

**Author:** ![stevengj](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stevengj/32/71_2.png) [@stevengj](https://discourse.julialang.org/u/stevengj)\
**Post date:** [October 14, 2018, 2:11am UTC](https://discourse.julialang.org/t/a-startup-jl-for-packages/16297/3 "2018-10-14T02:11:41Z")

</div>

> [@sswatson](#):
>
> Suppose that you want to run some custom initialization code whenever a particular package is loaded.

Isn’t this what the module ` __init__ ` function is for? Or by “you” you mean a user, not the package author?

---

<div class="post-metadata">

**Author:** ![sswatson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sswatson/32/5135_2.png) [@sswatson](https://discourse.julialang.org/u/sswatson)\
**Post date:** [October 14, 2018, 2:37am UTC](https://discourse.julialang.org/t/a-startup-jl-for-packages/16297/4 "2018-10-14T02:37:53Z")

</div>

Yes, as the user.

---

<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:** [October 14, 2018, 6:25am UTC](https://discourse.julialang.org/t/a-startup-jl-for-packages/16297/5 "2018-10-14T06:25:30Z")

</div>

You can use [callbacks](https://docs.julialang.org/en/stable/devdocs/require/#Module-loading-callbacks-1), but I would just do it in the `startup.jl` as you describe.
