What do lockfiles pin, *actually*? Let's dig in and get our hands dirty!

  • 07-08, 09:30–11:00, Club B
  • 07-08, 11:15–12:45, Club B

All times in Europe/Prague

Reproducible dependency management across multiple environments is crucial yet often misunderstood. This hands-on workshop demystifies virtual environments, lockfiles, and how to avoid conflicts when a project needs different dependencies for tasks like testing, documentation, and production.

You'll learn to maintain separate lockfiles per environment using pip's constraint files. Through live coding exercises, you'll set up a full-fledged GitHub project with GitHub Actions CI/CD pipelines that utilize tox/nox to run tests, build docs, and update lockfiles automatically.

By the end, you'll have practiced implementing robust, reproducible environments tailored to each project context, ensuring seamless collaboration and deployment.

Come and join a member of the PyPA and a seasoned contributor to the packaging ecosystem, including pip-tools, walk you through the intricacies of environment reproducibility.

Bring with you

  • your laptop
  • some editor/IDE
  • a few Python versions, something from the range of 3.7-3.13
  • pyenv/podman/docker should do as long as you're comfortable
  • GitHub account (don't forget your second factor!)
  • be able to author and push Git commits
  • if your laptop is corporate/limited, web-based environments like Gitpod or GitHub Codespaces should be enough
  • on Windows, you'll probably have easier time with WSL 2

Post-workshop materials

A complete implementation of the demonstrated DIY lock files-based environment management is available at https://github.com/webknjaz/ep2024-multilock-toy-template.


Expected audience expertise

Intermediate

See also: Complete implementation of the demonstrated DIY lock files-based environment management

🖥️ Hey, I'm Sviat — a serial maintainer of and contributor to open source software. 👨‍💻
🌄 By day, I'm a Principal Software Engineer at Ansible Core Team. 🌅
🌇 By night, I'm involved in maintaining CherryPy and doing CI/CD for aio-libs/aiohttp along with various related contributions mostly to Python projects and its ecosystem. I'm also a PyPA member, author of the blessed [pypi-publish GitHub Action] and one of the maintainers of the Python Packaging User Guide. 🌆

My ongoing interest is GitHub Apps, Actions, bots and related things using their shiny new APIs. I'm at the beginning of crafting a framework for that currently.

I'm proficient with Python Packaging and setting up CI/CD in open source projects at scale.

This is me.

<img alt="SWUbanner" src="https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner-personal-page.svg" />