<?xml version="1.0" encoding="utf-8" standalone="yes"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Python Developer Tooling Handbook – Scientific Python</title>
    <link>https://pydevtools.com/handbook/topics/scientific-python/</link>
    <description>NumPy, CUDA, conda, pixi, and the ML stack.</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Fri, 10 Apr 2026 12:46:15 -0400</lastBuildDate>
    
	  <atom:link href="https://pydevtools.com/handbook/topics/scientific-python/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>Anaconda: Python and R Data Science Platform</title>
      <link>https://pydevtools.com/handbook/reference/anaconda/</link>
      <pubDate>Tue, 28 Apr 2026 21:54:51 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/anaconda/</guid>
      <description>&lt;p&gt;Anaconda Distribution is a pre-packaged Python and R data science platform maintained by Anaconda, Inc. It bundles the &lt;a href=&#34;https://pydevtools.com/handbook/reference/conda/&#34;&gt;conda&lt;/a&gt; package manager, a Python interpreter, and over 1,500 scientific computing libraries into a single installer. The current release, Anaconda Distribution 2025.12, ships with Python 3.13.9 and conda 25.11.0.&lt;/p&gt;
&lt;div class=&#34;hx:overflow-x-auto hx:mt-6 hx:flex hx:flex-col hx:rounded-lg hx:border hx:py-4 hx:px-4 hx:border-gray-200 hx:contrast-more:border-current hx:contrast-more:dark:border-current hx:border-amber-200 hx:bg-amber-100 hx:text-amber-900 hx:dark:border-amber-200/30 hx:dark:bg-amber-900/30 hx:dark:text-amber-200&#34;&gt;
  &lt;p class=&#34;hx:flex hx:items-center hx:font-medium&#34;&gt;&lt;svg height=16px class=&#34;hx:inline-block hx:align-middle hx:mr-2&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; fill=&#34;none&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; aria-hidden=&#34;true&#34;&gt;&lt;path stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; d=&#34;M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z&#34;/&gt;&lt;/svg&gt;Warning&lt;/p&gt;</description>
    </item>
    <item>
      <title>Conda</title>
      <link>https://pydevtools.com/handbook/reference/conda/</link>
      <pubDate>Tue, 28 Apr 2026 21:54:51 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/conda/</guid>
      <description>&lt;p&gt;Conda is a language-agnostic, cross-platform package and &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-a-virtual-environment/&#34;&gt;environment&lt;/a&gt; manager. Where &lt;a href=&#34;https://pydevtools.com/handbook/reference/pip/&#34;&gt;pip&lt;/a&gt; installs Python packages from &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-pypi/&#34;&gt;PyPI&lt;/a&gt;, conda resolves dependencies across Python, R, C/C++, Fortran, and other languages in a single dependency graph. The current stable release is 26.3.1 (March 2026).&lt;/p&gt;
&lt;div class=&#34;hx:overflow-x-auto hx:mt-6 hx:flex hx:flex-col hx:rounded-lg hx:border hx:py-4 hx:px-4 hx:border-gray-200 hx:contrast-more:border-current hx:contrast-more:dark:border-current hx:border-blue-200 hx:bg-blue-100 hx:text-blue-900 hx:dark:border-blue-200/30 hx:dark:bg-blue-900/30 hx:dark:text-blue-200&#34;&gt;
  &lt;p class=&#34;hx:flex hx:items-center hx:font-medium&#34;&gt;&lt;svg height=16px class=&#34;hx:inline-block hx:align-middle hx:mr-2&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; fill=&#34;none&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; aria-hidden=&#34;true&#34;&gt;&lt;path stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; d=&#34;M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z&#34;/&gt;&lt;/svg&gt;Note&lt;/p&gt;</description>
    </item>
    <item>
      <title>Conda Package</title>
      <link>https://pydevtools.com/handbook/reference/conda-package/</link>
      <pubDate>Tue, 28 Apr 2026 21:54:51 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/conda-package/</guid>
      <description>&lt;p&gt;A conda package is a compressed archive containing pre-built binaries, library code, metadata, and dependency information for installation through &lt;a href=&#34;https://pydevtools.com/handbook/reference/conda/&#34;&gt;conda&lt;/a&gt; channels. It serves the same role in the conda ecosystem that a &lt;a href=&#34;https://pydevtools.com/handbook/reference/wheel/&#34;&gt;wheel&lt;/a&gt; serves on &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-pypi/&#34;&gt;PyPI&lt;/a&gt;, with one critical difference: conda packages can bundle software from any language (Python, R, C++, Fortran, Julia), not just Python.&lt;/p&gt;
&lt;h2&gt;Package Formats&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;package-formats&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#package-formats&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The conda ecosystem recognizes two archive formats, referred to as v1 and v2.&lt;/p&gt;</description>
    </item>
    <item>
      <title>conda-forge: Community Conda Package Channel</title>
      <link>https://pydevtools.com/handbook/reference/conda-forge/</link>
      <pubDate>Tue, 28 Apr 2026 21:54:51 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/conda-forge/</guid>
      <description>&lt;p&gt;conda-forge is a community-maintained collection of &lt;a href=&#34;https://pydevtools.com/handbook/reference/conda-package/&#34;&gt;conda packages&lt;/a&gt; distributed through a public channel on &lt;a href=&#34;https://anaconda.org/conda-forge&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;anaconda.org&lt;/a&gt;. Over 25,000 feedstocks (package repositories) produce builds for Linux, macOS, and Windows across multiple CPU architectures. Each feedstock contains a build recipe in its own GitHub repository, and automated infrastructure rebuilds packages when dependencies change or new platforms appear.&lt;/p&gt;
&lt;div class=&#34;hx:overflow-x-auto hx:mt-6 hx:flex hx:flex-col hx:rounded-lg hx:border hx:py-4 hx:px-4 hx:border-gray-200 hx:contrast-more:border-current hx:contrast-more:dark:border-current hx:border-blue-200 hx:bg-blue-100 hx:text-blue-900 hx:dark:border-blue-200/30 hx:dark:bg-blue-900/30 hx:dark:text-blue-200&#34;&gt;
  &lt;p class=&#34;hx:flex hx:items-center hx:font-medium&#34;&gt;&lt;svg height=16px class=&#34;hx:inline-block hx:align-middle hx:mr-2&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; fill=&#34;none&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; aria-hidden=&#34;true&#34;&gt;&lt;path stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; d=&#34;M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z&#34;/&gt;&lt;/svg&gt;Note&lt;/p&gt;</description>
    </item>
    <item>
      <title>Create your first Python project with pixi</title>
      <link>https://pydevtools.com/handbook/tutorial/create-your-first-python-project-with-pixi/</link>
      <pubDate>Fri, 08 May 2026 18:28:25 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/tutorial/create-your-first-python-project-with-pixi/</guid>
      <description>&lt;p&gt;This tutorial builds a weather data analysis tool that reads CSV data, computes statistics with pandas, and produces a chart with matplotlib. Every dependency comes from &lt;a href=&#34;https://pydevtools.com/handbook/reference/conda-forge/&#34;&gt;conda-forge&lt;/a&gt; and is managed by &lt;a href=&#34;https://pydevtools.com/handbook/reference/pixi/&#34;&gt;pixi&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Prerequisites&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;prerequisites&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#prerequisites&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Install pixi following the &lt;a href=&#34;https://pixi.sh/latest/getting_started/&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;official installation instructions&lt;/a&gt;. No separate Python install is required.&lt;/p&gt;
&lt;h2&gt;Create the project&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;create-the-project&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#create-the-project&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&#34;hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code&#34;&gt;

&lt;div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gp&#34;&gt;$&lt;/span&gt; pixi init weather_analysis
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;✔ Created /path/to/weather_analysis/pixi.toml
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;&lt;/span&gt;&lt;span class=&#34;gp&#34;&gt;$&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; weather_analysis
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;hextra-code-copy-btn-container  hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0&#34;&gt;
  &lt;button
    class=&#34;hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50&#34;
    title=&#34;Copy code&#34;
    aria-label=&#34;Copy code&#34;
    data-copied-label=&#34;Copied!&#34;
  &gt;
    &lt;div class=&#34;hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4&#34;&gt;&lt;/div&gt;
&lt;div class=&#34;hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4&#34;&gt;&lt;/div&gt;
  &lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;If you see &lt;code&gt;pixi: command not found&lt;/code&gt;, restart your shell so the installer&amp;rsquo;s &lt;code&gt;PATH&lt;/code&gt; update takes effect, or follow the &lt;a href=&#34;https://pixi.sh/latest/getting_started/&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;official installation instructions&lt;/a&gt; again.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Fix ModuleNotFoundError: No module named &#39;numpy&#39; During pip Install</title>
      <link>https://pydevtools.com/handbook/how-to/how-to-fix-modulenotfounderror-no-module-named-numpy-during-pip-install/</link>
      <pubDate>Wed, 13 May 2026 06:43:22 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/how-to/how-to-fix-modulenotfounderror-no-module-named-numpy-during-pip-install/</guid>
      <description>&lt;p&gt;This guide helps resolve an issue where a Python package fails to install because it cannot find &lt;code&gt;numpy&lt;/code&gt;, even though it is already installed in your &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-a-virtual-environment/&#34;&gt;virtual environment&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Problem&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;problem&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#problem&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;You&amp;rsquo;re trying to install a Python package using:&lt;/p&gt;
&lt;div class=&#34;hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code&#34;&gt;

&lt;div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uv pip install git+https://github.com/example/examplepkg.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# or&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install .&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;hextra-code-copy-btn-container  hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0&#34;&gt;
  &lt;button
    class=&#34;hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50&#34;
    title=&#34;Copy code&#34;
    aria-label=&#34;Copy code&#34;
    data-copied-label=&#34;Copied!&#34;
  &gt;
    &lt;div class=&#34;hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4&#34;&gt;&lt;/div&gt;
&lt;div class=&#34;hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4&#34;&gt;&lt;/div&gt;
  &lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Even though &lt;code&gt;numpy&lt;/code&gt; is installed in your &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-a-virtual-environment/&#34;&gt;environment&lt;/a&gt;, the install fails with:&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Install bitsandbytes</title>
      <link>https://pydevtools.com/handbook/how-to/how-to-install-bitsandbytes/</link>
      <pubDate>Wed, 13 May 2026 06:43:22 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/how-to/how-to-install-bitsandbytes/</guid>
      <description>&lt;p&gt;bitsandbytes provides 4-bit and 8-bit quantization for large language models, cutting GPU memory usage enough to run models that would otherwise not fit. Unlike PyTorch (see &lt;a href=&#34;https://pydevtools.com/handbook/explanation/installing-cuda-python-packages/&#34;&gt;Why Installing GPU Python Packages Is So Complicated&lt;/a&gt;), bitsandbytes publishes platform-specific wheels to &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-pypi/&#34;&gt;PyPI&lt;/a&gt; that bundle precompiled CUDA libraries for multiple toolkit versions. A plain &lt;code&gt;pip install&lt;/code&gt; works on Linux, Windows, and macOS without extra index URLs.&lt;/p&gt;
&lt;h2&gt;Requirements&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;requirements&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#requirements&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Python &amp;gt;= 3.10&lt;/li&gt;
&lt;li&gt;PyTorch &amp;gt;= 2.3 (see &lt;a href=&#34;https://pydevtools.com/handbook/how-to/how-to-install-pytorch-with-uv/&#34;&gt;How to Install PyTorch with uv&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;NVIDIA GPU with compute capability 6.0+ for GPU quantization (Pascal or newer)&lt;/li&gt;
&lt;li&gt;NVIDIA driver that supports CUDA 11.8 or later&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;bitsandbytes also supports CPU-only, AMD ROCm (preview), Intel XPU, and Apple Silicon. GPU quantization requires an NVIDIA GPU.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Install DeepSpeed</title>
      <link>https://pydevtools.com/handbook/how-to/how-to-install-deepspeed/</link>
      <pubDate>Wed, 13 May 2026 06:43:22 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/how-to/how-to-install-deepspeed/</guid>
      <description>&lt;p&gt;DeepSpeed publishes only a source distribution on &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-pypi/&#34;&gt;PyPI&lt;/a&gt;, with no prebuilt &lt;a href=&#34;https://pydevtools.com/handbook/reference/wheel/&#34;&gt;wheels&lt;/a&gt;. The &lt;code&gt;setup.py&lt;/code&gt; requires both PyTorch and a CUDA toolkit to generate metadata, so even a basic install needs &lt;code&gt;CUDA_HOME&lt;/code&gt; set and &lt;code&gt;nvcc&lt;/code&gt; on &lt;code&gt;PATH&lt;/code&gt;. Once installed, individual ops (fused Adam, CPU offloading, transformer kernels) are compiled on first use through PyTorch&amp;rsquo;s JIT C++ extension system. See &lt;a href=&#34;https://pydevtools.com/handbook/explanation/installing-cuda-python-packages/&#34;&gt;Why Installing GPU Python Packages Is So Complicated&lt;/a&gt; for background.&lt;/p&gt;
&lt;h2&gt;Requirements&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;requirements&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#requirements&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Platform: Linux (x86_64). Windows has partial support through WSL2. No macOS GPU support.&lt;/li&gt;
&lt;li&gt;Software: PyTorch already installed, a C++ compiler (&lt;code&gt;gcc&lt;/code&gt; or &lt;code&gt;g++&lt;/code&gt;), the CUDA toolkit with &lt;code&gt;nvcc&lt;/code&gt; on &lt;code&gt;PATH&lt;/code&gt;, and &lt;code&gt;CUDA_HOME&lt;/code&gt; set to the toolkit root (e.g. &lt;code&gt;/usr/local/cuda&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;System libraries: &lt;code&gt;libaio-dev&lt;/code&gt; is required for the async I/O op used by ZeRO-Infinity and NVMe offloading. Install it with &lt;code&gt;apt install libaio-dev&lt;/code&gt; on Debian/Ubuntu.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Install from PyPI&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;install-from-pypi&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#install-from-pypi&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;DeepSpeed&amp;rsquo;s &lt;code&gt;setup.py&lt;/code&gt; imports &lt;code&gt;torch&lt;/code&gt; at the top level, so PyTorch must be present before installation. The &lt;code&gt;--no-build-isolation&lt;/code&gt; flag tells the installer to use the current environment&amp;rsquo;s torch instead of creating a clean build environment:&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Install Flash-Attention</title>
      <link>https://pydevtools.com/handbook/how-to/how-to-install-flash-attention/</link>
      <pubDate>Wed, 13 May 2026 06:43:22 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/how-to/how-to-install-flash-attention/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-pypi/&#34;&gt;PyPI&lt;/a&gt; has no &lt;a href=&#34;https://pydevtools.com/handbook/reference/wheel/&#34;&gt;wheels&lt;/a&gt; for &lt;code&gt;flash-attn&lt;/code&gt;. Every &lt;code&gt;pip install flash-attn&lt;/code&gt; triggers a from-source CUDA compilation that can take over two hours (see &lt;a href=&#34;https://pydevtools.com/handbook/explanation/installing-cuda-python-packages/&#34;&gt;Why Installing GPU Python Packages Is So Complicated&lt;/a&gt; for background). Prebuilt wheels do exist on GitHub Releases, and the package&amp;rsquo;s &lt;code&gt;setup.py&lt;/code&gt; can fetch them automatically if your environment matches.&lt;/p&gt;
&lt;h2&gt;Requirements&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;requirements&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#requirements&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Platform: Linux on NVIDIA Ampere (A100, RTX 3090), Ada Lovelace (RTX 4090), or Hopper (H100). Windows has experimental support since v2.3.2. No macOS support.&lt;/li&gt;
&lt;li&gt;Software: CUDA toolkit &amp;gt;=12.0 with &lt;code&gt;nvcc&lt;/code&gt; on &lt;code&gt;PATH&lt;/code&gt;, PyTorch &amp;gt;=2.2 already installed in the target environment.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Install with prebuilt wheels (recommended)&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;install-with-prebuilt-wheels-recommended&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#install-with-prebuilt-wheels-recommended&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;flash-attn&lt;/code&gt; package includes a &lt;code&gt;CachedWheelsCommand&lt;/code&gt; in its &lt;code&gt;setup.py&lt;/code&gt; that tries to download a matching prebuilt wheel from GitHub Releases before falling back to compilation. The &lt;code&gt;--no-build-isolation&lt;/code&gt; flag is required because &lt;code&gt;setup.py&lt;/code&gt; imports &lt;code&gt;torch&lt;/code&gt; and &lt;code&gt;packaging&lt;/code&gt; at the top level. Both must be installed in the environment before running the install:&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Install llama-cpp-python</title>
      <link>https://pydevtools.com/handbook/how-to/how-to-install-llama-cpp-python/</link>
      <pubDate>Wed, 13 May 2026 06:43:22 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/how-to/how-to-install-llama-cpp-python/</guid>
      <description>&lt;p&gt;PyPI has no prebuilt &lt;a href=&#34;https://pydevtools.com/handbook/reference/wheel/&#34;&gt;wheels&lt;/a&gt; for &lt;code&gt;llama-cpp-python&lt;/code&gt;. A bare &lt;code&gt;pip install&lt;/code&gt; downloads a source distribution and compiles it without GPU support, which means inference runs entirely on CPU. To get CUDA or Metal acceleration, the build needs specific CMake flags passed through environment variables, or the install must pull from a separate wheel index that the maintainer publishes.&lt;/p&gt;
&lt;h2&gt;Requirements&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;requirements&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#requirements&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A C/C++ compiler and CMake are required for building from source. The project&amp;rsquo;s build system expects &lt;code&gt;clang&lt;/code&gt;; on systems where only &lt;code&gt;gcc&lt;/code&gt; is available, install &lt;code&gt;clang&lt;/code&gt; as well (e.g., &lt;code&gt;apt install clang&lt;/code&gt;). On macOS, Xcode command-line tools provide both. On Windows, Visual Studio Build Tools with the &amp;ldquo;Desktop development with C++&amp;rdquo; workload are needed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Install PyTorch with uv</title>
      <link>https://pydevtools.com/handbook/how-to/how-to-install-pytorch-with-uv/</link>
      <pubDate>Wed, 13 May 2026 06:43:22 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/how-to/how-to-install-pytorch-with-uv/</guid>
      <description>&lt;p&gt;PyTorch publishes different wheel builds for CPU, CUDA, ROCm, and XPU on separate package indexes (see &lt;a href=&#34;https://pydevtools.com/handbook/explanation/installing-cuda-python-packages/&#34;&gt;Why Installing GPU Python Packages Is So Complicated&lt;/a&gt; for background). Getting the right build requires telling &lt;a href=&#34;https://pydevtools.com/handbook/reference/uv/&#34;&gt;uv&lt;/a&gt; which index to use.&lt;/p&gt;
&lt;h2&gt;Default behavior without configuration&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;default-behavior-without-configuration&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#default-behavior-without-configuration&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Running &lt;code&gt;uv add torch torchvision&lt;/code&gt; with no extra configuration installs from PyPI. PyPI carries CPU-only wheels for Windows and macOS, and CUDA 12.8 wheels for Linux (as of PyTorch 2.9.1). For projects that only need CPU support on Windows/macOS and GPU support on Linux, this default works without any additional setup.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Install RAPIDS with uv</title>
      <link>https://pydevtools.com/handbook/how-to/how-to-install-rapids-with-uv/</link>
      <pubDate>Wed, 13 May 2026 06:43:22 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/how-to/how-to-install-rapids-with-uv/</guid>
      <description>&lt;p&gt;RAPIDS packages live on NVIDIA&amp;rsquo;s own package index, not PyPI (see &lt;a href=&#34;https://pydevtools.com/handbook/explanation/installing-cuda-python-packages/&#34;&gt;Why Installing GPU Python Packages Is So Complicated&lt;/a&gt; for background). Getting &lt;a href=&#34;https://pydevtools.com/handbook/reference/uv/&#34;&gt;uv&lt;/a&gt; to find them requires registering that index.&lt;/p&gt;
&lt;h2&gt;Prerequisites&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;prerequisites&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#prerequisites&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;RAPIDS requires:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Linux with glibc &amp;gt;= 2.28 (Ubuntu 20.04+, Debian 10+, Fedora 29+). On Windows, use WSL2 on Windows 11. macOS is not supported.&lt;/li&gt;
&lt;li&gt;NVIDIA GPU with compute capability 7.0+ (Volta architecture or newer).&lt;/li&gt;
&lt;li&gt;NVIDIA driver version 525.60.13+ for CUDA 12, or 580.65.06+ for CUDA 13.&lt;/li&gt;
&lt;li&gt;Python 3.10, 3.11, 3.12, or 3.13.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Check the installed driver version with:&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Install Triton</title>
      <link>https://pydevtools.com/handbook/how-to/how-to-install-triton/</link>
      <pubDate>Wed, 13 May 2026 06:43:22 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/how-to/how-to-install-triton/</guid>
      <description>&lt;p&gt;Triton is OpenAI&amp;rsquo;s open-source compiler for writing GPU kernels in Python. Most users encounter it as a transitive dependency of &lt;a href=&#34;https://pydevtools.com/handbook/how-to/how-to-install-pytorch-with-uv/&#34;&gt;PyTorch&lt;/a&gt;, but it can also be installed standalone for custom kernel development. Triton only ships &lt;a href=&#34;https://pydevtools.com/handbook/reference/wheel/&#34;&gt;wheels&lt;/a&gt; for Linux (x86_64 and aarch64). There are no macOS or Windows builds.&lt;/p&gt;
&lt;h2&gt;Requirements&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;requirements&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#requirements&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Linux (x86_64 or aarch64). Triton has no wheels for macOS or Windows.&lt;/li&gt;
&lt;li&gt;Python 3.10 or later (up to 3.14).&lt;/li&gt;
&lt;li&gt;glibc 2.27 or later (Ubuntu 18.04+, Debian 10+, RHEL 8+).&lt;/li&gt;
&lt;li&gt;An NVIDIA or AMD GPU with appropriate drivers for running compiled kernels. Triton itself installs without a GPU, but kernels cannot execute without one.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Install as a PyTorch dependency (automatic)&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;install-as-a-pytorch-dependency-automatic&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#install-as-a-pytorch-dependency-automatic&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;PyTorch declares Triton as a dependency on Linux x86_64. Installing PyTorch pulls in the matching Triton version automatically:&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Install xformers</title>
      <link>https://pydevtools.com/handbook/how-to/how-to-install-xformers/</link>
      <pubDate>Wed, 13 May 2026 06:43:22 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/how-to/how-to-install-xformers/</guid>
      <description>&lt;p&gt;xformers ships prebuilt &lt;a href=&#34;https://pydevtools.com/handbook/reference/wheel/&#34;&gt;wheels&lt;/a&gt; through the PyTorch package index, not &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-pypi/&#34;&gt;PyPI&lt;/a&gt;. Like PyTorch itself, the correct binary depends on the CUDA version of the target machine (see &lt;a href=&#34;https://pydevtools.com/handbook/explanation/installing-cuda-python-packages/&#34;&gt;Why Installing GPU Python Packages Is So Complicated&lt;/a&gt; for background). Each xformers release is pinned to a specific PyTorch version, so a version mismatch between the two is the most common source of installation failures.&lt;/p&gt;
&lt;h2&gt;Requirements&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;requirements&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#requirements&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Linux (manylinux_2_28, e.g. Ubuntu 20.04+) or Windows. macOS is not supported.&lt;/li&gt;
&lt;li&gt;NVIDIA GPU with compute capability 8.0+ (Ampere or newer). V100 support was dropped in xformers 0.0.30.&lt;/li&gt;
&lt;li&gt;NVIDIA driver compatible with the target CUDA version.&lt;/li&gt;
&lt;li&gt;Python 3.9 or later.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Version compatibility&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;version-compatibility&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#version-compatibility&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Each xformers release requires a specific PyTorch version. Installing the wrong combination produces import errors or silent correctness bugs.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Run a Jupyter Notebook with uv</title>
      <link>https://pydevtools.com/handbook/how-to/jupyter-notebook-with-uv/</link>
      <pubDate>Wed, 13 May 2026 06:43:22 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/how-to/jupyter-notebook-with-uv/</guid>
      <description>&lt;p&gt;When working with Jupyter notebooks, you should run them in isolated &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-a-virtual-environment/&#34;&gt;environments&lt;/a&gt; to prevent dependency conflicts. &lt;a href=&#34;https://pydevtools.com/handbook/reference/uv/&#34;&gt;uv&lt;/a&gt; provides several streamlined ways to do this.&lt;/p&gt;
&lt;h2&gt;Using Jupyter with uv&amp;rsquo;s Isolated Environments&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;using-jupyter-with-uvs-isolated-environments&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#using-jupyter-with-uvs-isolated-environments&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;To launch a Jupyter notebook with specific dependencies using uv:&lt;/p&gt;
&lt;div class=&#34;hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code&#34;&gt;

&lt;div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uv run --with jupyter --with pandas --with matplotlib jupyter lab&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;hextra-code-copy-btn-container  hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0&#34;&gt;
  &lt;button
    class=&#34;hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50&#34;
    title=&#34;Copy code&#34;
    aria-label=&#34;Copy code&#34;
    data-copied-label=&#34;Copied!&#34;
  &gt;
    &lt;div class=&#34;hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4&#34;&gt;&lt;/div&gt;
&lt;div class=&#34;hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4&#34;&gt;&lt;/div&gt;
  &lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This single command:&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Serve LLMs Locally with vLLM and uv</title>
      <link>https://pydevtools.com/handbook/how-to/how-to-use-vllm-with-uv/</link>
      <pubDate>Sat, 16 May 2026 06:59:40 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/how-to/how-to-use-vllm-with-uv/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/vllm-project/vllm&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;vLLM&lt;/a&gt; is a high-throughput inference engine for large language models. GPU inference runs on Linux with NVIDIA CUDA. vLLM also supports AMD ROCm and Intel XPU backends, and ships experimental CPU builds for x86, ARM, and Apple Silicon. Windows users run vLLM under &lt;a href=&#34;https://learn.microsoft.com/en-us/windows/wsl/install&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;WSL 2&lt;/a&gt;. This guide covers the most common path: NVIDIA GPUs on Linux, where vLLM depends on &lt;a href=&#34;https://pydevtools.com/handbook/how-to/how-to-install-pytorch-with-uv/&#34;&gt;PyTorch&lt;/a&gt; with CUDA support. &lt;a href=&#34;https://pydevtools.com/handbook/reference/uv/&#34;&gt;uv&lt;/a&gt;&amp;rsquo;s &lt;code&gt;--torch-backend&lt;/code&gt; flag ensures PyTorch pulls from the correct CUDA index to match your driver.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Is Conda actually free?</title>
      <link>https://pydevtools.com/handbook/explanation/is-conda-actually-free/</link>
      <pubDate>Tue, 28 Apr 2026 21:54:51 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/explanation/is-conda-actually-free/</guid>
      <description>&lt;p&gt;The &lt;a href=&#34;https://pydevtools.com/handbook/reference/conda/&#34;&gt;conda&lt;/a&gt; package manager is open source and always free. The &lt;a href=&#34;https://pydevtools.com/handbook/reference/anaconda/&#34;&gt;Anaconda&lt;/a&gt; repository that ships as the default package source for Anaconda Distribution and Miniconda is not. Confusing &amp;ldquo;conda&amp;rdquo; with &amp;ldquo;Anaconda&amp;rdquo; causes organizations to either pay for licenses they don&amp;rsquo;t need or violate terms they didn&amp;rsquo;t know existed.&lt;/p&gt;
&lt;h2&gt;What costs money&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;what-costs-money&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#what-costs-money&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Anaconda, Inc. operates a curated package repository at &lt;code&gt;repo.anaconda.com&lt;/code&gt;. Accessing that repository requires a paid license for any organization (for-profit, nonprofit, or government) with more than 200 employees or contractors. The threshold counts all employees across the entire organization, including affiliates.&lt;/p&gt;</description>
    </item>
    <item>
      <title>marimo: Reactive Python Notebook</title>
      <link>https://pydevtools.com/handbook/reference/marimo/</link>
      <pubDate>Sat, 02 May 2026 08:49:34 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/marimo/</guid>
      <description>&lt;p&gt;marimo is an open-source Python notebook in which cells re-execute automatically when the variables they read change. Notebooks are stored as plain &lt;code&gt;.py&lt;/code&gt; files rather than JSON and are parsed by static analysis to derive a deterministic execution order. The same file can be run as a standalone script or inside a sandboxed environment managed by &lt;a href=&#34;https://pydevtools.com/handbook/reference/uv/&#34;&gt;uv&lt;/a&gt;. It is licensed under Apache-2.0 and requires Python 3.10 or newer.&lt;/p&gt;
&lt;h2&gt;Reactive Notebook Model&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;reactive-notebook-model&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#reactive-notebook-model&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The traditional notebook model decouples cell ordering from execution. A Jupyter cell runs only when the user runs it, so the in-memory kernel state can drift from the visible code. Variables outlive the cells that defined them, and re-running cells out of order produces results that a fresh kernel restart cannot reproduce. This is the &lt;em&gt;hidden state&lt;/em&gt; problem.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Migrate a conda project to pixi</title>
      <link>https://pydevtools.com/handbook/tutorial/migrate-a-conda-project-to-pixi/</link>
      <pubDate>Wed, 29 Apr 2026 13:11:49 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/tutorial/migrate-a-conda-project-to-pixi/</guid>
      <description>&lt;p&gt;This tutorial converts a conda project (defined by an &lt;code&gt;environment.yml&lt;/code&gt;) into a &lt;a href=&#34;https://pydevtools.com/handbook/reference/pixi/&#34;&gt;pixi&lt;/a&gt; project. The result: project-local environments, an automatic lockfile, a built-in task runner, and access to the same &lt;a href=&#34;https://pydevtools.com/handbook/reference/conda-forge/&#34;&gt;conda-forge&lt;/a&gt; packages.&lt;/p&gt;
&lt;h2&gt;Prerequisites&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;prerequisites&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#prerequisites&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;pixi installed (&lt;a href=&#34;https://pixi.sh/latest/getting_started/&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;installation instructions&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;An &lt;code&gt;environment.yml&lt;/code&gt; file from an existing conda project&lt;/li&gt;
&lt;li&gt;Familiarity with conda workflows (see &lt;a href=&#34;https://pydevtools.com/handbook/tutorial/take-over-an-existing-conda-environment/&#34;&gt;Take Over an Existing Conda Environment&lt;/a&gt; if you&amp;rsquo;re new to conda)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Why migrate&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;why-migrate&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#why-migrate&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Conda works, but pixi solves several friction points:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pixi: Multi-Language Package and Workflow Manager</title>
      <link>https://pydevtools.com/handbook/reference/pixi/</link>
      <pubDate>Sat, 25 Apr 2026 06:42:19 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/pixi/</guid>
      <description>&lt;p&gt;Pixi is a cross-platform package manager and workflow tool that manages both &lt;a href=&#34;https://pydevtools.com/handbook/reference/conda-forge/&#34;&gt;conda-forge&lt;/a&gt; packages and PyPI packages from a single project manifest. It replaces &lt;a href=&#34;https://pydevtools.com/handbook/reference/conda/&#34;&gt;conda&lt;/a&gt;&amp;rsquo;s global environment model with project-local environments and automatic lock files.&lt;/p&gt;
&lt;div class=&#34;hx:overflow-x-auto hx:mt-6 hx:flex hx:flex-col hx:rounded-lg hx:border hx:py-4 hx:px-4 hx:border-gray-200 hx:contrast-more:border-current hx:contrast-more:dark:border-current hx:border-blue-200 hx:bg-blue-100 hx:text-blue-900 hx:dark:border-blue-200/30 hx:dark:bg-blue-900/30 hx:dark:text-blue-200&#34;&gt;
  &lt;p class=&#34;hx:flex hx:items-center hx:font-medium&#34;&gt;&lt;svg height=16px class=&#34;hx:inline-block hx:align-middle hx:mr-2&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; fill=&#34;none&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; aria-hidden=&#34;true&#34;&gt;&lt;path stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; d=&#34;M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z&#34;/&gt;&lt;/svg&gt;Note&lt;/p&gt;</description>
    </item>
    <item>
      <title>Set up a data science project with uv</title>
      <link>https://pydevtools.com/handbook/tutorial/set-up-a-data-science-project-with-uv/</link>
      <pubDate>Tue, 05 May 2026 06:58:20 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/tutorial/set-up-a-data-science-project-with-uv/</guid>
      <description>&lt;p&gt;This tutorial sets up a data analysis project with &lt;a href=&#34;https://pydevtools.com/handbook/reference/uv/&#34;&gt;uv&lt;/a&gt; so that every dependency is pinned, notebooks run in the right environment, and a collaborator can reproduce your setup with a single command.&lt;/p&gt;
&lt;h2&gt;Prerequisites&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;prerequisites&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#prerequisites&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Install uv following the &lt;a href=&#34;https://pydevtools.com/handbook/how-to/how-to-install-uv/&#34;&gt;installation guide&lt;/a&gt;. No separate Python install is required.&lt;/p&gt;
&lt;h2&gt;Create the project&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;create-the-project&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#create-the-project&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&#34;hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code&#34;&gt;

&lt;div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gp&#34;&gt;$&lt;/span&gt; uv init weather_analysis
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;Initialized project `weather-analysis` at `/path/to/weather_analysis`
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;&lt;/span&gt;&lt;span class=&#34;gp&#34;&gt;$&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; weather_analysis
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;hextra-code-copy-btn-container  hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0&#34;&gt;
  &lt;button
    class=&#34;hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50&#34;
    title=&#34;Copy code&#34;
    aria-label=&#34;Copy code&#34;
    data-copied-label=&#34;Copied!&#34;
  &gt;
    &lt;div class=&#34;hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4&#34;&gt;&lt;/div&gt;
&lt;div class=&#34;hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4&#34;&gt;&lt;/div&gt;
  &lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This creates a project directory with a &lt;code&gt;pyproject.toml&lt;/code&gt;, a &lt;code&gt;main.py&lt;/code&gt;, and a &lt;code&gt;README.md&lt;/code&gt;. The &lt;a href=&#34;https://pydevtools.com/handbook/reference/pyproject.toml/&#34;&gt;pyproject.toml&lt;/a&gt; stores all project metadata and dependencies:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Set up a GPU data science project with pixi</title>
      <link>https://pydevtools.com/handbook/tutorial/set-up-a-gpu-data-science-project-with-pixi/</link>
      <pubDate>Fri, 10 Apr 2026 12:46:15 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/tutorial/set-up-a-gpu-data-science-project-with-pixi/</guid>
      <description>&lt;p&gt;This tutorial builds a PyTorch image classification project managed by &lt;a href=&#34;https://pydevtools.com/handbook/reference/pixi/&#34;&gt;pixi&lt;/a&gt;. It loads a pretrained ResNet model, classifies a sample image, and prints the top-5 predictions. The project uses pixi&amp;rsquo;s multi-environment feature to support both GPU (CUDA) and CPU-only machines from a single &lt;code&gt;pixi.toml&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Prerequisites&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;prerequisites&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#prerequisites&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;pixi installed (&lt;a href=&#34;https://pixi.sh/latest/getting_started/&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;installation instructions&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Familiarity with pixi basics (see &lt;a href=&#34;https://pydevtools.com/handbook/tutorial/create-your-first-python-project-with-pixi/&#34;&gt;Create Your First Python Project with pixi&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;For GPU: an NVIDIA GPU with a recent driver. For CPU-only: everything works, just slower.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Why conda-forge for PyTorch&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;why-conda-forge-for-pytorch&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#why-conda-forge-for-pytorch&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;PyTorch on &lt;a href=&#34;https://pydevtools.com/handbook/reference/conda-forge/&#34;&gt;conda-forge&lt;/a&gt; shares the CUDA runtime with other packages. When you install PyTorch and cuDNN from conda-forge, they use the same &lt;code&gt;cuda-toolkit&lt;/code&gt; package rather than each bundling its own copy. This produces smaller environments and avoids version conflicts between CUDA-dependent libraries.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Set up a multi-GPU training environment with uv</title>
      <link>https://pydevtools.com/handbook/tutorial/set-up-a-multi-gpu-training-environment-with-uv/</link>
      <pubDate>Fri, 15 May 2026 07:11:00 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/tutorial/set-up-a-multi-gpu-training-environment-with-uv/</guid>
      <description>&lt;p&gt;This tutorial builds a PyTorch training project managed by &lt;a href=&#34;https://pydevtools.com/handbook/reference/uv/&#34;&gt;uv&lt;/a&gt; that runs identically on one GPU or eight. You will install PyTorch with CUDA support, add Hugging Face Accelerate for distributed training, write a CIFAR-10 classifier, and launch it across multiple GPUs.&lt;/p&gt;
&lt;div class=&#34;hx:overflow-x-auto hx:mt-6 hx:flex hx:flex-col hx:rounded-lg hx:border hx:py-4 hx:px-4 hx:border-gray-200 hx:contrast-more:border-current hx:contrast-more:dark:border-current hx:border-purple-200 hx:bg-purple-100 hx:text-purple-900 hx:dark:border-purple-200/30 hx:dark:bg-purple-900/30 hx:dark:text-purple-200&#34;&gt;
  &lt;p class=&#34;hx:flex hx:items-center hx:font-medium&#34;&gt;&lt;svg height=16px class=&#34;hx:inline-block hx:align-middle hx:mr-2&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; fill=&#34;none&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; aria-hidden=&#34;true&#34;&gt;&lt;path stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; d=&#34;M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z&#34;/&gt;&lt;/svg&gt;Important&lt;/p&gt;</description>
    </item>
    <item>
      <title>Take over an existing conda environment</title>
      <link>https://pydevtools.com/handbook/tutorial/take-over-an-existing-conda-environment/</link>
      <pubDate>Mon, 04 May 2026 08:00:31 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/tutorial/take-over-an-existing-conda-environment/</guid>
      <description>&lt;p&gt;You just joined a team or lab that uses &lt;a href=&#34;https://pydevtools.com/handbook/reference/conda/&#34;&gt;conda&lt;/a&gt;. Someone handed you an &lt;code&gt;environment.yml&lt;/code&gt; and told you to &lt;code&gt;conda activate&lt;/code&gt;. This tutorial walks through the day-to-day operations: creating an environment from a file, exploring what&amp;rsquo;s installed, adding packages, handling the conda+pip boundary, and exporting a reproducible environment for teammates.&lt;/p&gt;
&lt;h2&gt;Prerequisites&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;prerequisites&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#prerequisites&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Install Miniforge following the &lt;a href=&#34;https://github.com/conda-forge/miniforge#install&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Miniforge installation instructions&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&#34;hx:overflow-x-auto hx:mt-6 hx:flex hx:flex-col hx:rounded-lg hx:border hx:py-4 hx:px-4 hx:border-gray-200 hx:contrast-more:border-current hx:contrast-more:dark:border-current hx:border-purple-200 hx:bg-purple-100 hx:text-purple-900 hx:dark:border-purple-200/30 hx:dark:bg-purple-900/30 hx:dark:text-purple-200&#34;&gt;
  &lt;p class=&#34;hx:flex hx:items-center hx:font-medium&#34;&gt;&lt;svg height=16px class=&#34;hx:inline-block hx:align-middle hx:mr-2&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; fill=&#34;none&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; aria-hidden=&#34;true&#34;&gt;&lt;path stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; d=&#34;M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z&#34;/&gt;&lt;/svg&gt;Important&lt;/p&gt;</description>
    </item>
    <item>
      <title>Understanding the Conda/Anaconda Ecosystem</title>
      <link>https://pydevtools.com/handbook/explanation/understanding-the-conda-anaconda-ecosystem/</link>
      <pubDate>Fri, 10 Apr 2026 11:13:55 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/explanation/understanding-the-conda-anaconda-ecosystem/</guid>
      <description>&lt;p&gt;Conda is not Anaconda. &lt;a href=&#34;https://pydevtools.com/handbook/reference/conda/&#34;&gt;Conda&lt;/a&gt; is a package manager; &lt;a href=&#34;https://pydevtools.com/handbook/reference/anaconda/&#34;&gt;Anaconda&lt;/a&gt; is a distribution that bundles conda with over 1,500 pre-installed packages. Confusing the two is common, and it leads to choosing the wrong installer or paying for a commercial license you don&amp;rsquo;t need.&lt;/p&gt;
&lt;p&gt;The conda ecosystem operates as a parallel system to Python&amp;rsquo;s standard packaging tools like &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-pypi/&#34;&gt;PyPI&lt;/a&gt;, &lt;a href=&#34;https://pydevtools.com/handbook/reference/pip/&#34;&gt;pip&lt;/a&gt;, and &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-a-virtual-environment/&#34;&gt;virtual environments&lt;/a&gt;. Conda uses its own package format, repository structure, and environment management. The two ecosystems can coexist, but they work independently.&lt;/p&gt;</description>
    </item>
    <item>
      <title>uv vs pixi vs conda for Scientific Python</title>
      <link>https://pydevtools.com/handbook/explanation/uv-vs-pixi-vs-conda-for-scientific-python/</link>
      <pubDate>Tue, 28 Apr 2026 21:54:51 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/explanation/uv-vs-pixi-vs-conda-for-scientific-python/</guid>
      <description>&lt;p&gt;Your scientific Python project needs CUDA, GDAL, or HDF5, and &lt;code&gt;pip install&lt;/code&gt; cannot help. Which tool should manage those native dependencies alongside your Python code? The answer depends on where your packages live: &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-pypi/&#34;&gt;PyPI&lt;/a&gt;, conda-forge, or both.&lt;/p&gt;
&lt;p&gt;Three tools cover the spectrum. &lt;a href=&#34;https://pydevtools.com/handbook/reference/uv/&#34;&gt;uv&lt;/a&gt; installs from PyPI. &lt;a href=&#34;https://pydevtools.com/handbook/reference/pixi/&#34;&gt;pixi&lt;/a&gt; installs from conda-forge and PyPI together. &lt;a href=&#34;https://pydevtools.com/handbook/reference/conda/&#34;&gt;conda&lt;/a&gt; installs from conda channels.&lt;/p&gt;
&lt;h2&gt;What each tool can install&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;what-each-tool-can-install&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#what-each-tool-can-install&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;uv resolves packages from PyPI, plus Git URLs, local paths, and private indexes. It cannot install non-Python dependencies like the CUDA toolkit, GDAL, or HDF5.&lt;/p&gt;</description>
    </item>
    <item>
      <title>What Are Wheel Variants?</title>
      <link>https://pydevtools.com/handbook/explanation/what-are-wheel-variants/</link>
      <pubDate>Tue, 28 Apr 2026 21:54:51 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/explanation/what-are-wheel-variants/</guid>
      <description>&lt;p&gt;A default NumPy &lt;a href=&#34;https://pydevtools.com/handbook/reference/wheel/&#34;&gt;wheel&lt;/a&gt; for &lt;code&gt;x86_64&lt;/code&gt; has to run on every x86-64 CPU that has ever shipped, with the baseline instruction set fixed when AMD64 was defined in 2003. Every SIMD instruction Intel and AMD have added since then is off-limits to the installer, because a wheel filename has no place to declare &amp;ldquo;needs AVX2&amp;rdquo; or &amp;ldquo;needs SSE4&amp;rdquo;. On scientific workloads, Ralf Gommers of Quansight put the performance left on the table at &lt;a href=&#34;https://talkpython.fm/episodes/show/544/wheel-next-packaging-peps&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;10x to 20x&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>When should I choose pixi over uv?</title>
      <link>https://pydevtools.com/handbook/explanation/when-should-i-choose-pixi-over-uv/</link>
      <pubDate>Tue, 28 Apr 2026 21:54:51 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/explanation/when-should-i-choose-pixi-over-uv/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://pydevtools.com/handbook/reference/uv/&#34;&gt;uv&lt;/a&gt; and &lt;a href=&#34;https://pydevtools.com/handbook/reference/pixi/&#34;&gt;pixi&lt;/a&gt; solve overlapping problems with different scope. Both create project-local environments and generate lockfiles. The difference is what they can install. uv pulls from &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-pypi/&#34;&gt;PyPI&lt;/a&gt; (plus Git, URL, and path sources). Pixi pulls from conda channels (typically &lt;a href=&#34;https://pydevtools.com/handbook/reference/conda-forge/&#34;&gt;conda-forge&lt;/a&gt;) and PyPI, which means it can install system-level dependencies and non-Python software that PyPI does not distribute.&lt;/p&gt;
&lt;p&gt;The short version: if you need conda packages, pixi is the better fit. If you don&amp;rsquo;t, uv is simpler.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why Installing GPU Python Packages Is So Complicated</title>
      <link>https://pydevtools.com/handbook/explanation/installing-cuda-python-packages/</link>
      <pubDate>Wed, 15 Apr 2026 11:17:37 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/explanation/installing-cuda-python-packages/</guid>
      <description>&lt;p&gt;Python &lt;a href=&#34;https://pydevtools.com/handbook/reference/wheel/&#34;&gt;wheels&lt;/a&gt; have no way to express GPU hardware requirements. A wheel&amp;rsquo;s three metadata tags (Python version, ABI, and platform) tell an installer everything about the CPU environment, but nothing about the GPU or which CUDA version is available.&lt;/p&gt;
&lt;p&gt;PyTorch ships different binaries for CUDA 12.6, 12.8, 13.0, and CPU-only builds. Without GPU metadata in wheels, it has no standard way to publish all four variants to &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-pypi/&#34;&gt;PyPI&lt;/a&gt; and let installers pick the right one. Every CUDA-dependent project has had to invent its own distribution workaround.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why should I choose Conda?</title>
      <link>https://pydevtools.com/handbook/explanation/why-should-i-choose-conda/</link>
      <pubDate>Tue, 28 Apr 2026 21:54:51 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/explanation/why-should-i-choose-conda/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://pydevtools.com/handbook/reference/conda/&#34;&gt;Conda&lt;/a&gt; installs &lt;em&gt;software&lt;/em&gt;, not just Python packages. That distinction matters when your project depends on CUDA toolkit versions, R statistical libraries, or C++ numerical frameworks that exist outside the Python packaging ecosystem.&lt;/p&gt;
&lt;h2&gt;When Conda solves problems other tools cannot&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;when-conda-solves-problems-other-tools-cannot&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#when-conda-solves-problems-other-tools-cannot&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Tools like &lt;a href=&#34;https://pydevtools.com/handbook/reference/pip/&#34;&gt;pip&lt;/a&gt; and &lt;a href=&#34;https://pydevtools.com/handbook/reference/uv/&#34;&gt;uv&lt;/a&gt; can install many compiled packages through binary wheels, including OpenCV and CUDA-specific PyTorch builds. But conda goes further by solving Python and non-Python dependencies together. Consider a machine learning project that requires:&lt;/p&gt;</description>
    </item>
    
  </channel>
</rss>
