<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Python on My Blog</title>
    <link>https://vllmr.org/tags/python/</link>
    <description>Recent content in Python on My Blog</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Tue, 22 Sep 2026 13:57:59 +0000</lastBuildDate>
    <atom:link href="https://vllmr.org/tags/python/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>A Canonical Python Project Setup in 2026</title>
      <link>https://vllmr.org/blog/python-project-2026/</link>
      <pubDate>Tue, 22 Sep 2026 13:57:59 +0000</pubDate>
      <guid>https://vllmr.org/blog/python-project-2026/</guid>
      <description>&lt;p&gt;Packaging in Python has been notoriously confusing for newcomers.&#xA;How should I structure the directories? What is the difference between&#xA;&lt;code&gt;setup.py&lt;/code&gt; and &lt;code&gt;setup.cfg&lt;/code&gt;? How do they relate to a &lt;code&gt;requirements.txt&lt;/code&gt;? Why do I&#xA;need a &lt;code&gt;MANIFEST.in&lt;/code&gt; file? Do I need &lt;code&gt;tox&lt;/code&gt; or &lt;code&gt;nox&lt;/code&gt;, and what are they for? Why&#xA;is &lt;code&gt;flake8&lt;/code&gt; ignoring my &lt;code&gt;pyproject.toml&lt;/code&gt; file? What&amp;rsquo;s the deal with virtual&#xA;environments?&lt;/p&gt;&#xA;&lt;p&gt;Luckily, this has been simplified a lot in recent years, in substantial part&#xA;thanks to &lt;a&#xA;  href=&#34;https://docs.astral.sh/uv/&#34;&#xA;  &#xA;  &#xA;    class=&#34;link--external&#34; target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&#xA;  &#xA;&gt;&lt;code&gt;uv&lt;/code&gt;&lt;/a&gt;.&#xA;I finally (and hopefully permanently) converged on what I call a canonical Python project&#xA;template. If you are new to Python or generally confused about Python packaging,&#xA;this blog article is for you. Find the&#xA;&lt;a&#xA;  href=&#34;https://copier.readthedocs.io/en/stable/&#34;&#xA;  &#xA;  &#xA;    class=&#34;link--external&#34; target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&#xA;  &#xA;&gt;copier&lt;/a&gt; template at the end.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
