
Category: Anki
-
If you’re running Arch Linux and trying to build Anki from source, you may have encountered a frustrating build failure related to Python 3.14. Here’s what went wrong and how I fixed it.
The Problem
Arch Linux recently updated to Python 3.14.2 as the system default. When attempting to build Anki from the main branch, the build failed with this error:
error: the configured Python interpreter version (3.14) is newer than PyO3's maximum supported version (3.13) = help: please check if an updated version of PyO3 is available. Current version: 0.23.3
The issue is that Anki depends on
orjson, a fast JSON library written in Rust. This library uses PyO3 for Python bindings, and the bundled version (0.23.3) only supports Python up to 3.13.Why UV_PYTHON and .python-version Didn’t Work
My first attempts involved setting the
UV_PYTHONenvironment variable and creating a.python-versionfile in the repository root. Neither worked because Anki’s build runner wasn’t passing these settings through to uv when creating the virtual environment. The build system kept detecting and using/usr/bin/python3(3.14.2) regardless.The Solution
The fix is to install Python 3.13 via pyenv and put it first in your PATH so it gets detected before the system Python.
First, install pyenv and Python 3.13:
sudo pacman -S pyenv pyenv install 3.13.1
Then, for your build session, prepend Python 3.13 to your PATH:
export PATH="$HOME/.pyenv/versions/3.13.1/bin:$PATH"
Now clean the build directory and rebuild:
cd ~/ankidev/anki rm -rf out ./tools/runopt
The build should now complete successfully, with the virtual environment using Python 3.13.1:
./out/pyenv/bin/python --version Python 3.13.1
Making It Permanent
If you regularly build Anki, add the PATH modification to your shell configuration:
echo 'export PATH="$HOME/.pyenv/versions/3.13.1/bin:$PATH"' >> ~/.bashrc
Alternatively, create a simple wrapper script for building Anki that sets the PATH temporarily.
Conclusion
This is a temporary issue that will resolve itself once orjson updates its bundled PyO3 to a version that supports Python 3.14. Until then, using pyenv to provide Python 3.13 is a clean workaround that doesn’t require downgrading your system Python or breaking other applications.
The Arch Linux philosophy of staying on the bleeding edge occasionally runs into these compatibility gaps with projects that have Rust dependencies—something to keep in mind when building from source.
-
Modern dark-themed Anki cloze note type for medical students with expandable resource hints (UWorld, AMBOSS, First Aid, etc.)

https://github.com/chrislongros/Anki-Cloze-Deletion/releases/tag/v1.0.0
-
I just created my own Cloze Deletions for USMLE type of Anki flashcards. The CSS code etw is ChatGPT generated and tried.


Available on GitHub under the BSD3 Licence.
-
This PR adds the old functionality of the Evaluate button with RMSE and log loss during FSRS optimization/evaluation.
It can be activated by the debug console with the following command:
from anki.config import Config
mw.col.set_config_bool(Config.Bool.FSRS_LEGACY_EVALUATE, True) -
- colored answer buttons (with option to disable them): https://github.com/ankitects/anki/pull/4371
- Speed up update_memory_state by batching FSRS memory state calculation: https://github.com/ankitects/anki/pull/4335

-
What’s Changed
- Fix custom colors not saving by @iamllama in #4326
- Decode images asynchronously during review. Please let us know if images in the review screen load faster or slower for you. By @abdnh in #4320
- Prevent clipping for QPushButton:default:hover by @jcznk in #4323
- Updated Dockerfile to use Ninja build system by @e-hamrin in #4321
- Fix/Add lower review limit to health check. by @Luc-Mcgrady in #4334
- Make timebox message translatable with flexible variable order by @snowtimeglass in #4338
- (UI polish) Improved margins in Card Browser’s “Previewer” by @jcznk in #4337


-

What’s Changed
- The launcher now has a download mirror option for users in China, and no longer auto-downloads on first run. The version check should now also work with SOCKS proxies.
- Feat/expected_workload_with_existing_cards implementation by @Luc-Mcgrady in #4243
- Update stale comment by @user1823 in #4235
- Feat/Show health check and already optimal at the same time by @Luc-Mcgrady in #4238
- “Workload” variable typo by @Luc-Mcgrady in #4239
- Fix/use real step count to simulate by @L-M-Sherlock in #4240
- Feat/Card stats update review time by @Luc-Mcgrady in #4236
- Statistics “Reviews” graph, make the color of “New” and “Learning” cards consistent with the color of card count by @thomasrixen in #4245
- Fix simulator graph not visible when viewport height < 400px by @iamllama in #4248
- Fix show_exception’s messagebox always formatting as plaintext by @iamllama in #4246
- Limit time studied today to minutes by @user1823 in #4242
- Fix Cards with Missing Last Review Time During Database Check by @L-M-Sherlock in #4237
- Use space-around for tabbed values by @Luc-Mcgrady in #4252
- Fix/Retention help button bounds by @Luc-Mcgrady in #4253
- Fix/Exclude new cards from is_due_in_days by @user1823 in #4249
- Feat/Neaten dr graph x-axis by @Luc-Mcgrady in #4251












