Learn how to create your first Python package!
- When: Tuesday, 8 July 2025 @ 8:00–12:00 PM Pacific Time
- Where: SciPy Meeting 2025 in Tacoma, Washington
- Instructors:
- Leah Wasser
- Carol Willing
- Jeremiah Paige
- Tetsuo Koyama
Setup instructions
You can choose to work on your own machine during the workshop or use the GitHub Codespace we’ve set up for you. Codespaces include all the tools needed to create your first package—preinstalled and ready to go.
We encourage you to use GitHub Codespaces! If you prefer to install things locally, please do so before the workshop.
1. Make sure you have a GitHub and Test PyPI account
Before the workshop, please create and log into the following accounts:
- Create a free GitHub account if you don’t already have one.
- Create a free account on Test PyPI — we’ll use this to practice publishing packages.
Important: To follow along when we publish to Test PyPI, you must enable two-factor authentication (2FA) on your Test PyPI account. We strongly recommend doing this before the workshop!
2a. Setup for working locally on your laptop
We recommend using GitHub Codespaces (see next section) to avoid issues with environment setup. However, if you prefer to work locally, please ensure your environment is set up and ready before the workshop.
If you’re comfortable with Python environments, arrive with an environment that has:
- Hatch installed
- Copier installed
- You can install both via
pipx
,uv
, pixi, or any preferred package manager.
- You can install both via
- VS Code (or any IDE you prefer for packaging)
Note:
- We strongly suggest that you go to GitHub.com and Fork our SciPy 2025 workshop repository just in case something with your local installation isn’t working. This will ensure that you can follow along with us regardless of your environment setup!
- JupyterLab or Jupyter Notebook is not ideal for the packaging work we’ll be doing.
If you run into issues, please join our Discord and ask for help before the workshop.
2b. If you plan to use GitHub Codespaces (SUGGESTED)
We strongly recommend using our curated GitHub Codespace, which can be found in your forked workshop repository. This workspace is already set up with:
- VSCode, copier, Hatch, and everything you need to create your first Python package successfully. Codespaces also allows you to easily commit your work during the workshop to your own forked GitHub repository.
Before the workshop do the following
- Go to GitHub.com and Fork our SciPy 2025 workshop repository

- Launch the codespace before the workshop:
The initial spin-up for a codespace can take up to 15 minutes or longer. Once GitHub creates the cloud environment, it will be quicker to relaunch. Please do this before attending the workshop session.
To open your Codespace,
- Go to your forked SciPy 2025 workshop repository on GitHub,
- Switch to a branch that you want to work on during the workshop,
- Click the code drop-down button (where you’d find a link to clone a repo)
- Click on the Codespaces tab in the drop-down.
Within the Codespaces tab you will see a button:
Create codespace on main
. This button launches a Codespace from the currently active branch. It will default to the
main
branch if you haven’t changed your branch in the repository.
The animated gif below walks you through how this works.

To follow GitHub best practices, always create a new branch before making changes to a repository, even if you own the repository. Avoid working directly on the
main
branch.
About GitHub Codespaces: Working in the cloud
What is a codespace
GitHub Codespaces are cloud-based development environments that let you code directly in your browser—no local setup needed. They provide fully configured, container-based environments connected to your GitHub repository.
You can customize Codespaces with .devcontainer
files to match your
development setup. The Codespace for this workshop opens in Visual Studio
Code by default, but you can configure it to use any IDE you prefer.
Learn more in the GitHub Codespaces docs.
Codespaces are free for up to 60 hours/month on GitHub’s free plan. Be sure to shut yours down after the workshop to conserve your allocated time.
Codespaces are associated with your personal GitHub account, even if you open one from the pyOpenSci repository. The usage counts toward your own GitHub credits.
View & manage open codespaces
Once you’ve opened a Codespace, you can return to it later without needing to start from scratch. GitHub will reuse the environment, making it launch significantly faster the second time.
If possible, resume the same Codespace you started in, rather than creating a new one in your fork. Read on to learn how to find and reopen a codespace.
View all active Codespaces associated with your account
When you delete a Codespace, you’re ending the session, but the configuration remains available so you can launch a new one anytime. Learn more in the GitHub docs
How to relaunch a codespace
To relaunch a Codespace:
- Go to your fork of the workshop repository.
- Click the Code dropdown (same as when you first created the Codespace).
- Select the Codespaces tab to view existing environments.
- Select the codespace that you want to resume from the list (see image below).
As you can see in the animated gif below, GitHub codespaces always have fun names.

Connect with us!
There are many ways to get involved if you’re interested!
- If you read through our lessons and want to suggest changes, open an issue in our lessons repository here
- Volunteer to be a reviewer for pyOpenSci’s software review process
- Submit a Python package to pyOpenSci for peer review
- Donate to pyOpenSci to support scholarships for future training events and the development of new learning content.
- Check out our volunteer page for other ways to get involved.
You can also:
- Keep an eye on our events page for upcoming training events.
Follow us on social platforms:
If you are on LinkedIn, check out and subscribe to our newsletter, too.
Leave a comment