<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Read the Docs</title><link href="https://readthedocs-about--394.org.readthedocs.build/" rel="alternate"></link><link href="https://readthedocs-about--394.org.readthedocs.build/feeds/atom.xml" rel="self"></link><id>https://readthedocs-about--394.org.readthedocs.build/</id><updated>2026-04-21T00:00:00-07:00</updated><entry><title>Deprecation of python.install.method: setuptools</title><link href="https://readthedocs-about--394.org.readthedocs.build/blog/2026/04/deprecate-setuptools-install/" rel="alternate"></link><published>2026-04-21T00:00:00-07:00</published><updated>2026-04-21T00:00:00-07:00</updated><author><name>Manuel Kaufman</name></author><id>tag:readthedocs-about--394.org.readthedocs.build,2026-04-21:/blog/2026/04/deprecate-setuptools-install/</id><summary type="html">&lt;p&gt;We are announcing the deprecation of &lt;code&gt;python.install.method: setuptools&lt;/code&gt; in the &lt;code&gt;.readthedocs.yaml&lt;/code&gt; configuration file.&lt;/p&gt;
&lt;p&gt;This option uses &lt;code&gt;python …&lt;/code&gt;&lt;/p&gt;</summary><content type="html">&lt;p&gt;We are announcing the deprecation of &lt;code&gt;python.install.method: setuptools&lt;/code&gt; in the &lt;code&gt;.readthedocs.yaml&lt;/code&gt; configuration file.&lt;/p&gt;
&lt;p&gt;This option uses &lt;code&gt;python setup.py install&lt;/code&gt;, which is deprecated in the Python packaging ecosystem.
Read the Docs will remove support for it on &lt;strong&gt;Wednesday, July 1st, 2026&lt;/strong&gt;.
After this date, projects still using &lt;code&gt;python.install.method: setuptools&lt;/code&gt; will fail their builds until they are updated.&lt;/p&gt;
&lt;p&gt;Projects using this install method will have a configuration file that looks like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nt"&gt;version&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;2&lt;/span&gt;

&lt;span class="nt"&gt;python&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;install&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;setuptools&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="nt"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;These projects should update their configuration file to use &lt;code&gt;pip&lt;/code&gt; instead:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nt"&gt;version&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;2&lt;/span&gt;

&lt;span class="nt"&gt;python&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;install&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;pip&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="nt"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;If you are already using &lt;code&gt;python.install.method: pip&lt;/code&gt;, &lt;code&gt;python.install.method: uv&lt;/code&gt;, or you are not using &lt;code&gt;method: setuptools&lt;/code&gt;, no action is required.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;pip&lt;/code&gt; is the recommended replacement for most projects.
If you are using &lt;code&gt;uv&lt;/code&gt; for your Python dependency management, you can also migrate to &lt;code&gt;python.install.method: uv&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="deprecation-timeline"&gt;Deprecation timeline&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tuesday, April 21, 2026&lt;/strong&gt;: Publish this deprecation announcement.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Before Wednesday, July 1, 2026&lt;/strong&gt;: Email maintainers of active projects that are still using &lt;code&gt;python.install.method: setuptools&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wednesday, July 1, 2026&lt;/strong&gt;: Remove support for &lt;code&gt;python.install.method: setuptools&lt;/code&gt; on Read the Docs.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="how-to-update-your-project"&gt;How to update your project&lt;/h2&gt;
&lt;p&gt;For most projects, replacing &lt;code&gt;method: setuptools&lt;/code&gt; with &lt;code&gt;method: pip&lt;/code&gt; is enough.
This changes the installation step from &lt;code&gt;python setup.py install&lt;/code&gt; to &lt;code&gt;pip install&lt;/code&gt;, which is the supported and recommended workflow.&lt;/p&gt;
&lt;p&gt;If your project installs optional dependencies, you can keep using &lt;code&gt;extra_requirements&lt;/code&gt; with &lt;code&gt;pip&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nt"&gt;version&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;2&lt;/span&gt;

&lt;span class="nt"&gt;python&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;install&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;pip&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="nt"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;.&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="nt"&gt;extra_requirements&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;docs&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Projects that only install requirements files and do not use &lt;code&gt;python.install.method: setuptools&lt;/code&gt; are not affected by this change.&lt;/p&gt;
&lt;h2 id="contact-us"&gt;Contact us&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://app.readthedocs.org/support/"&gt;Contact us&lt;/a&gt; if you have any questions,
or if you run into issues migrating away from &lt;code&gt;python.install.method: setuptools&lt;/code&gt;.&lt;/p&gt;</content><category term="Changelog"></category><category term="python"></category><category term="deprecation"></category><category term="configuration-file"></category></entry></feed>