Installing Free-Threaded Python - Python Free-Threading Guide

To install a free-threaded CPython interpreter, you can choose from the following options:

use a pre-built binary

build from source

use a container image

install a Jupyter kernel

To get started quickly, use a pre-built binary via python.org installers (nuget for Windows), Linux distribution installers, or multi-platform package managers.

Building from source is straightforward too. If you hit a bug that may involve CPython itself, you may want to build from source.

Use a pre-built binary

#

There are a growing number of options to install a free-threaded interpreter, including the python.org installers, Linux distro installers, and multi-platform package managers like conda.

As a packager, what should I name the package and interpreter?Please see

this guidance from the Python Steering Council

Install binaries directly

#

The

python.org downloads page

provides macOS and Windows installers that have experimental support.

Currently, you must customize the install - e.g., for Windows there is a Download free-threaded binaries checkbox under "Advanced Options". See also the

Using Python on Windows

section of the Python 3.13+ docs.

Automating the process of downloading the official installers and installing the free-threaded binaries is also possible:

WindowsmacOS

Due to limitations of the Windows Python.org installer, using free-threaded Python installed from the Python.org installer may lead to trouble. In particular, if you install both a free-threaded and gil-enabled build of Python 3.13+ using the Python.org installer, both installs will share a site-packages folder. This can very quickly lead to broken environments if packages for both versions are simultaneously installed.

For that reason, we suggest using the nuget installer, which provides a separate python-freethreaded package that does not share an installation with the python package.

Note

Update the various places in the script below to reflect your desired Python version.

$url='https://www.nuget.org/api/v2/package/python-freethreaded/3.14.0'Invoke-WebRequest-Uri$url-OutFile'python-freethreaded.3.14.0.nupkg'Install-Packagepython-freethreaded-ScopeCurrentUser-Source$pwd$python_dir=(Get-Item((Get-Package-Namepython-freethreaded).Source)).DirectoryName$env:path=$python_dir+"\tools;"+$python_dir+"\tools\Scripts;"+$env:PathThis will only modify your Path for the current Powershell session, so you will also need to permanently add the nuget package location to your Path to use it after closing the current session.

If for some reason you need to use the Python.org installer, despite the problems described above, you can install it like so:

$url='https://www.python.org/ftp/python/3.14.0/python-3.14.0-amd64.exe'Invoke-WebRequest-Uri$url-OutFile'python-3.14.0-amd64.exe'.\python-3.14.0-amd64.exe/quietInclude_freethreaded=1If you are running this script without administrator privileges, a UAC prompt will trigger when you try to run the installer. The resulting Python installation will be available afterwards in AppData\Local\Programs\Python\Python314\python3.14t.exe. See

Installing Without UI

for more information.

Install on a macOS laptop or desktop

The official Python documentation's section on

installing free-threaded binaries

explains installation as well as any limitations of the free-threaded version. For convenience, we summarize the installation steps here:

Download the macOS installer package from

python.org downloads page

or the

python.org pre-release downloads page

.

Run the installer.

On the Installation Type screen ("Standard Installation on Macintosh HD"), click the "Customize" button.

On the "Customize Install on Macintosh HD" screen, check the "Free-threaded Python [experimental]" option, and click "install".

Advanced installation (CI)

This process installs the free-threaded version of Python 3.14.0 using the command line for more complex cases, such as running CI. It follows the process described in the CPython documentation for

installing a binary using the command line

.

While this process installs the free-threaded version of Python 3.14.0, you can install other versions by substituting the version number in the following steps.

Download the installer package from python.org.

curl-Ohttps://www.python.org/ftp/python/3.14.0/python-3.14.0-macos11.pkg

Create a choicechanges.plist file to customize the install to enable the PythonTFramework-3.14 package and accept the other defaults (install all other packages).

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.14</string> </dict></array></plist>EOF

Run the installer.

sudoinstaller-pkg./python-3.14.0-macos11.pkg\-applyChoiceChangesXML./choicechanges.plist\-target/

Remove the package installer.

rm-fpython-3.14.0-macos11.pkg

See also

this GitHub issue

for more information.

Linux distribution installers

#

FedoraNixpkgsUbuntu

Fedora ships a packaged version, which you can install with:

sudodnfinstallpython3.14-freethreading This will install the interpreter at /usr/bin/python3.14t.

Nixpkgs provides cached builds under the

python314FreeThreading

attribute from NixOS 24.05 and newer.

With flakes enabled the following command will drop you in an ephemeral shell:

nixshellnixpkgs#python314FreeThreading Without flakes, make sure to update your nixpkgs channel first:

sudonix-channel--update nix-shell-ppython314FreeThreading For Ubuntu you can use the

deadsnakes PPA

by adding it to your repositories and then installing python3.14-nogil:

sudoadd-apt-repositoryppa:deadsnakes sudoapt-getupdate sudoapt-getinstallpython3.14-nogil Multi-platform Package Managers

#

Conda-forgeAnaconda TestingHomebrewuv

mambacreate-nnogil-cconda-forgepython-freethreading or with conda:

condacreate-nnogil--override-channels-cconda-forgepython-freethreading Anaconda's test channel includes the Python interpreter and ABI-compatible builds of many common packages, like NumPy, Cython, Pandas, etc. These packages use the python_abi metapackage and should be compatible with conda-forge:

condacreate-nnogil--override-channels-cad-testing/label/py314-chttps://repo.anaconda.com/pkgs/mainpython-freethreading [Full list of Anaconda test packages built with

python 3.13 free-threading ABI

,

with python 3.14 free-threading ABI (empty as of Oct 8th 2025).

On macOS and Linux, you can use Homebrew:

brewinstallpython-freethreading This will install the interpreter at $(brew --prefix)/bin/python3.14t.

On macOS, the Python framework built with the free-threading ABI can be found at $(brew --prefix)/Frameworks/PythonT.framework.

If you have uv installed, you can create a virtual environment using free-threaded Python by specifying "3.14t" as the python version:

uvvenv--python3.14t Build from source

#

Currently we suggest building CPython from source using the latest version of the CPython main branch. See

the build instructions

in the CPython developer guide. You will need to install

needed third-party dependencies

before building. To build the free-threaded version of CPython, pass --disable-gil to the configure script:

./configure--with-pydebug--disable-gil If you will be switching Python versions often, it may make sense to build CPython using

pyenv

. In order to do that, you can use the following:

pyenvinstall--debug--keep3.14 Use containers

#

The

manylinux containers

have free-threaded builds. You can use any of the actively supported images:

quay.io/pypa/manylinux_2_28_...

quay.io/pypa/musllinux_1_1_...

quay.io/pypa/musllinux_1_2_...

quay.io/pypa/manylinux2014_...

Replace ... with your desired architecture, such as x86_64 or aarch64.

These images have python3.14t available, along with other commonly used tools that can target it like the latest pip, pipx, and uv.

Installing a free-threaded Jupyter kernel

#

While Jupyter

does not currently support free-threaded Python

, you can run Jupyter with a regular build of Python and a free-threaded Jupyter kernel.

Launch using regular Python and free-threaded Jupyter kernel

#

Install the free-threaded Jupyter kernel to a location that is visible to both Python installations:

python3.14t-mipykernelinstall--namepython3.14t--user You should be able to launch new jupyterlab or jupyter notebook sessions using the python3.14t kernel to experiment with free-threaded Python.

Launch using free-threaded Python and free-threaded Jupyter kernel

#

It is also possible to launch jupyterlab on the free-threaded build,

see this issue comment

for more details.