Windows Installation - Pick Your Struggle
NuGet: Works Great When PowerShell Doesn't Hate You
The NuGet approach is clean but loves to fail with execution policy errors. The python-freethreading package updates regularly but PowerShell security gets in the way:
## This will fail if you have spaces in your username - fucking Windows
$url = 'https://www.nuget.org/api/v2/package/python-freethreaded/3.13.1'
Invoke-WebRequest -Uri $url -OutFile 'python-freethreaded.3.13.1.nupkg'
## PowerShell will probably block this next line
Install-Package python-freethreaded -Scope CurrentUser -Source $pwd
## If you get \"execution policy\" errors, run this first:
## Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
$python_dir = (Get-Item((Get-Package -Name python-freethreaded).Source)).DirectoryName
$env:path = $python_dir + \" ools;\" + $python_dir + \" ools\Scripts;\" + $env:Path
Official Installer: Fine Until Your PATH Gets Fucked
Download from python.org/downloads but beware - the Windows installer quirks will bite you:
- Click "Customize installation"
- Check "Download free-threaded binaries (experimental)"
- Pray it doesn't conflict with existing Python installations
The installer loves to add duplicate PATH entries that break everything. You'll find python3.13t.exe
buried somewhere in C:\Users\[username]\AppData\Local\Programs\Python\Python313\
instead of where you expect it.

macOS Installation - Less Broken Than Windows
Official Installer: Actually Works Most of the Time
- Download from python.org
- Run the installer
- Click "Customize" and check "Free-threaded Python [experimental]"
- Hope it doesn't corrupt your existing Python installation
The installer sometimes hides python3.13t
in /Library/Frameworks/Python.framework/Versions/3.13/bin/
instead of putting it in /usr/local/bin
like a sane person would expect. You might need to add that to your PATH manually.
Command Line Installation for Masochists:
## This works if you enjoy XML hell
curl -O https://www.python.org/ftp/python/3.13.3/python-3.13.3-macos11.pkg
## Creating XML configs by hand in 2025 - peak developer experience
cat > ./choicechanges.plist <<EOF
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
<plist version=\"1.0\">
<array>
<dict>
<key>attributeSetting</key>
<integer>1</integer>
<key>choiceAttribute</key>
<string>selected</string>
<key>choiceIdentifier</key>
<string>org.python.Python.PythonTFramework-3.13</string>
</dict>
</array>
</plist>
EOF
## This will probably ask for your password 3 times
sudo installer -pkg ./python-3.13.3-macos11.pkg \
-applyChoiceChangesXML ./choicechanges.plist \
-target /
Homebrew: Slow But Reliable
## Takes forever but at least it works
brew install python-freethreading
You'll find it at $(brew --prefix)/bin/python3.13t
- one of the few things Homebrew puts in a sensible location. Check the formula page for the latest version.

Linux Installation - The Least Painful Option
Fedora: Just Works
sudo dnf install python3.13-freethreading
## Actually works as expected - shocking for an experimental feature
Ubuntu/Debian: Russian Roulette with PPAs
## The Deadsnakes PPA breaks every other month when maintainers get busy
sudo add-apt-repository ppa:deadsnakes/ppa # Note: needs /ppa suffix
sudo apt-get update
sudo apt-get install python3.13-nogil
## If you get \"package not found\", the PPA is probably broken again
## Check https://launchpad.net/~deadsnakes/+archive/ubuntu/ppa
The Deadsnakes PPA is maintained by volunteers who do amazing work, but experimental builds like free-threading often lag behind. Check the PPA status before trying.
Arch Linux: Surprisingly Stable
## AUR packages are hit-or-miss but this one usually works
yay -S python313-freethreading
NixOS: For People Who Like Complexity
## Works perfectly in a pristine environment that's impossible to reproduce
nix shell nixpkgs#python313FreeThreading
Package Managers: Choose Your Disappointment
Conda: Slow But Thorough
## Takes 5 minutes to solve the environment, but at least it's isolated
mamba create -n freethreaded -c conda-forge python-freethreading
## mamba is faster than conda - use it if you have it
uv: The New Hotness That Actually Works
## Modern Python tooling that doesn't suck - rare
uv venv --python 3.13t myproject
source myproject/bin/activate
## This is probably your best bet for a clean installation
uv is the fastest Python package manager and handles free-threaded Python better than pip. It's written in Rust and doesn't make you wait 5 minutes to solve dependencies like conda does.
Building from Source: For People Who Enjoy Pain
## Prepare for 30 minutes of compiler warnings and cryptic errors
git clone https://github.com/python/cpython.git
cd cpython
## You'll need build-essential, libssl-dev, libffi-dev, and 20 other packages
./configure --disable-gil --prefix=/usr/local/python3.13t
## Make sure you have -j$(nproc) or this will take forever
make -j$(nproc) # Pray your system doesn't run out of RAM
sudo make install
## If you get \"No rule to make target\" errors, you're missing dependencies
## If it builds but segfaults, you probably have conflicting libraries
Building from source is only worth it if you're debugging CPython itself or need bleeding-edge features. The CPython developer guide has all the gory details, but for everyone else, use a package manager like a sane person.

Too many options? The comparison below cuts through the marketing bullshit and tells you what actually works.