Environment Management und Packaging
,Soooo, nach einer langen, dunklen, ungeplanten Sommerpause aufgrund unüberwindlicher Terminfindungsschwierigkeiten gibt es jetzt endlich wieder eine neue Episode 🎙️!
Dominik und Jochen haben diesmal mit Anna-Lena über Python Environment Management und Packaging Tools gesprochen. Sie hat dazu bereits einen super Artikel geschrieben und einen Vortrag auf der letzten Europython-Konferenz gehalten. Während in anderen Sprachen wie Rust das Thema weniger knifflig ist und es eine kanonische Lösung gibt, kommt man in der Python-Welt 🐍 leider nicht umhin, sich mit diesem Problem auseinanderzusetzen.
Shownotes
Unsere E-Mail für Fragen, Anregungen & Kommentare: hallo@python-podcast.de
Vorstellung
News
- Pydantic Version 2 - weniger reibungsloses Update
- Django Ninja - Fast Django REST Framework
- LLM finetuning
- Language Models for Music Recommendation
- Postgres 16 released!
Tools
- An unbiased evaluation of environment management and packaging tools | Artikel von Anna-Lena zum Thema
- Simple Python Version Management: pyenv
- Rye: An Experimental Package Management Solution for Python
- asdf The Multiple Runtime Version Manager
- Miniconda is a free minimal installer for conda
- Anaconda is a distribution of the Python and R programming languages for scientific computing
- PyPy - A fast, compliant alternative implementation of Python
- pip is the package installer for Python
- pipx — Install and Run Python Applications in Isolated Environments
- Virtual Environments
- Pipenv: Python Dev Workflow for Humans
- Hatch is a modern, extensible Python project manager
- PDM, as described, is a modern Python package and dependency manager supporting the latest PEP standards
- Poetry - python packaging and dependency management made easy
- pip-tools = pip-compile + pip-sync A set of command line tools to help you keep your pip-based packages fresh
- Flit is a simple way to put Python packages and modules on PyPI
- Cargo downloads your Rust project’s dependencies and compiles your project
- Projektkonfiguration
- pre-commit - A framework for managing and maintaining multi-language pre-commit hooks
- Gohlke Grabber - Simple script to download .whl packages from the pre-built Python packages at
- Running Windows is more painful than torture [Comic]
- Scaffolding
- Git and Django 5.0 - Adam Johnson
- tox aims to automate and standardize testing in Python
- nox is a command-line tool that automates testing in multiple Python environments
- huak - A Python package manager written in Rust. The Cargo for Python.
- Anna-Lena Popkes: An unbiased evaluation of environment management and packaging tools
- Pyflow streamlines working with Python projects and files
ChronoJon on 9. Oktober 2023 21:01
Fürs Scaffolding gibt es ebenfalls https://copier.readthedocs.io/en/stable/
Eines der erklärten Ziele ist es, die Projekte damit auch upgraden zu können. Ein eigenes Templates zu erstellen, ist ebenfalls ziemlich leicht, wenn man sich bereits mit jinja auskennt. Ich habe damit eine Starter für meine DataScience-Projekte in 2-3 Stunden geschrieben.
Ich verstehe nicht, wieso man global ein Package installiert, wenn es so etwas wie pipx gibt. Seitdem ich das benutze, müsste ich nie wieder etwas global installieren. Ich habe auch die pip-Umgebungsvariable gesetzt, die verhindert, dass etwas global installiert werden kann. Manchmal will VSCode nämlich hilfreich sein und installiert etwas versehentlich global.
Jochen on 9. Oktober 2023 21:57
Ah cool, danke für den Hinweis - copier kannte ich bisher noch nicht. Hmm, wenn du gar nichts global installieren magst, wie installierst du dann pipx :-p? Ich finde pipx auch super, aber ich meine mal gelesen zu haben (jetbrains survey oder so), dass überhaupt nur 10-15% der Python-Entwickler pipx kennen. Und es macht Dinge komplizierter, wenn man auf eine neue Python-Version umstellen will. Inzwischen entferne ich zuerst pipx, upgrade dann und installiere dann wieder pipx gefolgt von einem --reinstall-all. Früher hatte ich immer mal wieder alte via pipx installierte Tools, die dann überraschender Weise unter einer alten Version liefen, oder ihren Interpreter nicht mehr gefunden haben, weil der inzwischen deinstalliert war etc pp...