pyOpenSci creates resources to help you navigate the Python packaging ecosystem with ease. Our materials are community developed and go through extensive technical and pedagogical review.

Our development process: Community-developed Python tutorials for scientists

An image showing a bunch of hands holding up a sign that says Community Developed. the background is dark purple with a few green decorative items.

Our tutorials are created through a multi-stage community review process.

  • Tutorials are developed by the pyOpenSci team or community members.
  • Tutorials are reviewed by tool maintainers to ensure ideas and concepts are accurate.
  • Before publication, tutorials then go through several rounds of community review for accuracy, usability and accessibility.

Start learning: Beginner-friendly Python packaging tutorials

Beginner-friendly Python packaging tutorials guide you through creating a Python package, following modern best practices. It’s best to follow the tutorials in order, but you can always pick a specific topic if you wish to jump around.

0. Get to know Hatch

Hatch is an end-to-end Python packaging and workflow tool. In this tutorial, you will install and learn how to configure Hatch for Python packaging.

View Tutorial

1. What is a Python package

Learn about what a Python package is and the basic components that make up a Python package.

View Tutorial

2. Make your Python code installable

Learn how to create the most basic version of a Python package which can then be installed into a Python environment.

View Tutorial

3. Publish your Python package to PyPI

Learn how to publish your Python package to and to

View Tutorial

4. Publish your Python package to conda forge using grayskull

Learn how to publish your Python package to the conda-forge channel of conda using the grayskull Python package.

View Tutorial

5. Add a README file to your Python package

A README file is often the landing page that a user will use to understand your package. Learn about how to create a useful README file for your Python package.

View Tutorial

6 . Add a LICENSE and CODE_OF_CONDUCT file to your Python package

License and code of conduct files are important to add to your Python package as they provide instructions for both how users can use your package and also how the community of users should interact with you as a maintainer.

View Tutorial

7. Add metadata using a pyproject.toml file to your Python package

To enhance the visibility of your package on PyPI and provide more information about its compatibility with Python versions, project development status, and project maintainers, you should add additional metadata to your pyproject.toml file. This lesson will guide you through the process.

View Tutorial

What's next: Collaborative GitHub for Scientists

A graphic with a light yellow background that says essential collaboration skills for scientists - using GitHub. On the right there is a man and a woman sitting at a tall table with laptops working.

Through the Better Software for Science Fellowship we will be developing lessons focused on teaching core GitHub collaboration skills needed for both contributing to open source software and for working in an open science team environment.

Stay up to date with course development and announcements in our Discourse community, as well as on Fosstodon and LinkedIn