<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Python &#8211; Pascua Theus</title>
	<atom:link href="https://theus.name/tag/python/feed/" rel="self" type="application/rss+xml" />
	<link>https://theus.name</link>
	<description>Informatik, IT-Sicherheit, Web</description>
	<lastBuildDate>Mon, 08 Dec 2025 06:31:11 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>

<image>
	<url>https://theus.name/wordpress/wp-content/uploads/2017/02/cropped-t-icon-32x32.png</url>
	<title>Python &#8211; Pascua Theus</title>
	<link>https://theus.name</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Von Poetry zu uv: So migrierst du dein Python-Projekt</title>
		<link>https://theus.name/2025/05/30/poetry-projekt-nach-uv-umziehen/</link>
					<comments>https://theus.name/2025/05/30/poetry-projekt-nach-uv-umziehen/#respond</comments>
		
		<dc:creator><![CDATA[pascua]]></dc:creator>
		<pubDate>Fri, 30 May 2025 12:41:00 +0000</pubDate>
				<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Poetry]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[uv]]></category>
		<guid isPermaLink="false">https://theus.name/?p=456</guid>

					<description><![CDATA[Die meisten meiner privaten Projekte schreibe ich in Python. Ende 2019 erschien Poetry. Es war lange mein bevorzugtes Tool für das Dependency- und Paketmanagement in Python. Es hat das Hinzufügen, Aktualisieren und Entfernen von Abhängigkeiten enorm vereinfacht, automatisch virtuelle Umgebungen verwaltet und mit der poetry.lock-Datei für reproduzierbare Setups gesorgt. Heute probiere ich ein neues Tool &#8230; <a href="https://theus.name/2025/05/30/poetry-projekt-nach-uv-umziehen/" class="more-link"><span class="screen-reader-text">„Von Poetry zu uv: So migrierst du dein Python-Projekt“ </span>weiterlesen</a>]]></description>
										<content:encoded><![CDATA[
<p>Die meisten meiner privaten Projekte schreibe ich in Python. <a href="https://github.com/python-poetry/poetry/releases/tag/1.0.0" target="_blank" rel="noreferrer noopener">Ende 2019</a> erschien Poetry. Es war lange mein bevorzugtes Tool für das Dependency- und Paketmanagement in Python. Es hat das Hinzufügen, Aktualisieren und Entfernen von Abhängigkeiten enorm vereinfacht, automatisch virtuelle Umgebungen verwaltet und mit der <code>poetry.lock</code>-Datei für reproduzierbare Setups gesorgt. Heute probiere ich ein neues Tool aus: <a href="https://docs.astral.sh/uv/" target="_blank" rel="noreferrer noopener">uv</a>.</p>



<span id="more-456"></span>



<p>Mit uv gibt es einen neuen, in Rust geschriebenen Paketmanager, der manche Schwächen von Poetry adressiert und neue Vorteile bietet. Ausschlaggebend für meinen Test war, dass uv von den gleichen Entwicklern wie <a href="https://docs.astral.sh/ruff/" target="_blank" rel="noreferrer noopener">Ruff</a> stammt – ein Tool, das ich bereits intensiv nutze und von dem ich absolut begeistert bin. Da Ruff meine Arbeitsweise in Python bereits deutlich verbessert hat, war ich gespannt, ob uv ähnliche Vorteile bieten kann.</p>



<p>Was mir bei Poetry bislang wirklich gefehlt hat, war die einfache Möglichkeit, zwischen verschiedenen Python-Versionen zu wechseln. uv ersetzt nicht nur pip und Poetry, sondern auch Tools wie pyenv, mit denen sich mehrere Python-Versionen parallel installieren, verwalten und projektbezogen auswählen lassen – ohne Versionskonflikte. Die jeweils benötigte Python-Version wird von uv automatisch installiert und verwaltet, indem du eine <code>.python-version</code>-Datei im Projekt setzt.</p>



<p>Und auch wenn Poetry schon einen enormen Geschwindigkeitsvorteil gegenüber dem klassischen Ansatz mit pip bietet, ist uv noch einmal schneller. 10-100 Mal schneller als pip versprechen die Entwickler. In den meisten Projekten, die ich privat oder auf der Arbeit betreue, hat mich die Geschwindigkeit von Poetry zwar nur selten gestört, wenn du uv aber einmal benutzt, ist die Schwuppdizität spürbar erhöht. Auch für CI-Pipelines ein enormer Gewinn.</p>



<h2 class="wp-block-heading">Installation</h2>



<p>Zur <a href="https://docs.astral.sh/uv/getting-started/installation/">Installation von uv</a> gibt es eine Vielzahl Möglichkeiten. Ich habe uv aus den Paketquellen meiner Linux-Distribution installiert, wenn das für dich nicht möglich ist, empfehle ich die Installation mit dem <a href="https://docs.astral.sh/uv/getting-started/installation/#standalone-installer">Standalone installer</a>.</p>



<p>Anschließend trägst du dir die <a href="https://docs.astral.sh/uv/getting-started/installation/#shell-autocompletion">Shell autocompletion</a> in die Konfigurations-Datei deiner Shell ein. Folge dazu einfach den Schritten in der Dokumenation.</p>



<h2 class="wp-block-heading">Migration</h2>



<p>Die Migration deines bestehenden Projekts ist wirklich extrem einfach. uv bringt uvx mit. uvx ist ein Kommandozeilen-Tool und eine Kurzform für <code>uv tool run</code>, das zum schnellen Ausführen von Python-basierten Kommandozeilen-Tools dient. Mit uvx kannst du beliebige Python-Tools ausführen, ohne sie vorher in deiner Projektumgebung installieren zu müssen. Stattdessen wird das gewünschte Tool in einer temporären, von uv verwalteten virtuellen Umgebung ausgeführt, die im Cache liegt. Das hält deine Projektabhängigkeiten sauber und ermöglicht eine sehr schnelle Ausführung.</p>



<p>uvx kannst du auch nutzen, um das Tool <a href="https://pypi.org/project/migrate-to-uv/" target="_blank" rel="noreferrer noopener">migrate-to-uv</a> zu nutzen und damit dein Projekt von Poetry (oder einem anderen Paketmanager) zu uv zu migrieren.</p>



<pre class="wp-block-code"><code>uvx migrate-to-uv</code></pre>



<p>Dieses Tool übernimmt automatisch:</p>



<ul class="wp-block-list">
<li>Die Konvertierung der Projektmetadaten von Poetry zu uv</li>



<li>Die Übernahme der Abhängigkeitsversionen</li>



<li>Die Erzeugung einer neuen <code>uv.lock</code>-Datei (und das Entfernen der <code>poetry.lock</code>-Datei)</li>



<li>Die Beibehaltung von Abhängigkeitsgruppen (Dependency Groups)</li>
</ul>



<p>Zum Schluss bietet sich noch das Setzen eines Alias zum Aktivieren des virtuellen Environment an. Einen solchen Alias habe ich schon seit langem und erleichtert mir enorm die Aktivierung.</p>



<pre class="wp-block-code"><code>avenv() { source venv/bin/activate 2&gt;/dev/null || source .venv/bin/activate 2&gt;/dev/null || echo "No venv found."; }</code></pre>



<p>Diese Zeile trägst du in deine Shell-Konfiguration ein und kannst ab sofort mit <code>avenv</code> das Environment öffnen.</p>



<h2 class="wp-block-heading">Wichtige Befehle</h2>



<p>uv bietet im Prinzip die gleichen Befehle für deinen Workflow wie Poetry. Die Kommandos sind dabei sehr ähnlich und häufig auch komplett gleich.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Aufgabe</th><th>Poetry</th><th>uv ​</th></tr><tr><td>Version des Projekts ausgeben</td><td><code>poetry version</code></td><td><code>uv version</code></td></tr><tr><td>Abhängigkeiten installieren</td><td><code>poetry install</code></td><td><code>uv sync</code></td></tr><tr><td>Abhängigkeit hinzufügen</td><td><code>poetry add &lt;package&gt;</code></td><td><code>uv add &lt;package&gt;</code></td></tr><tr><td>Entiwcklungsabhängigkeit hinzufügen</td><td><code>poetry add --group dev &lt;package&gt;</code></td><td><code>uv add --dev &lt;package&gt;</code></td></tr><tr><td>Im Environment ausführen</td><td><code>poetry run &lt;command&gt;</code></td><td><code>uv run &lt;command&gt;</code></td></tr><tr><td>Lock-Datei aktualisieren</td><td><code>poetry lock</code></td><td><code>uv lock</code></td></tr></thead></table></figure>



<h2 class="wp-block-heading">Fazit</h2>



<p>Nach vielen Jahren mit Poetry als treuem Begleiter im Python-Ökosystem hat mich uv wirklich überrascht. Die Kombination aus beeindruckender Geschwindigkeit, einfacher Verwaltung verschiedener Python-Versionen und der wirklich unkomplizierten Migration bestehender Projekte macht uv zu einer spannenden Alternative – gerade auch für Entwickler:innen, die Wert auf moderne und effiziente Workflows legen.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://theus.name/2025/05/30/poetry-projekt-nach-uv-umziehen/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
