Developing Julia Packages


October 4 2019 in Julia | Tags: | Author: Christopher Rackauckas

Have you ever wanted to develop your own package for the Julia programming language? Have you ever wanted to contribute a bug fix? Then this tutorial is for you! I will walk you through getting the community resources (Discourse and Slack) so that you can get help, get the Juno and GitKraken development environments going, and show all of the steps of building a package. In this video you will learn how to use modules, how to interactively update a package without recompiling, how to setup continuous integration testing, and how to get your package registered. In addition, I show how to “dev” a package to get a local copy to work on, and use this to give a bug fix to open a pull-request to fix an issue on an existing package.

Note: After “]dev”ing a package, the local version of “using Package” uses the package in your “~/.julia/dev/Package” folder!

2 thoughts on “Developing Julia Packages

  1. John Ferrier

    says:

    Stuck trying to generate(“MyExample”, t). You deleted the directory MyExample; otherwise, like you, it says that the directory already exists. However, then I get an error that it needs that specific directory because it “already exists as a direct dependency”.

    Maybe this is a Mac only thing, but I cannot find a way to continue.

    “cannot add package ‘MyExample = “6972d17f-aab1-4aab1-4aa5-a539 . . .” since package ‘MyExample = “f7c24181-ab5c-4e4b-bbc8 . . .”‘ already exists as a direct dependency.”

    I wouldn’t bother you, but I have tried several things since yesterday to figure this out.


    • Have you tried `]rm MyExample` to remove the package on the Julia side? My guess is you installed my example, tried it out a little bit, then deleted the folder… but if you already did `]add MyExample` or `]dev MyExample` then it’s already in your Manifest, so then you need to tell Julia you deleted it.


Write a Reply or Comment

Your email address will not be published. Required fields are marked *


*

This site uses Akismet to reduce spam. Learn how your comment data is processed.