Skip to main content

Toolkit for recommender systems research, teaching, and more.

Project description

Python recommendation tools

Automatic Tests codecov Scientific Python Ecosystem Coordination PyPI - Version Conda Version

LensKit is a set of Python tools for experimenting with and studying recommender systems. It provides support for training, running, and evaluating recommender algorithms in a flexible fashion suitable for research and education.

LensKit for Python (LKPY) is the successor to the Java-based LensKit project.

[!IMPORTANT] If you use LensKit for Python in published research, please cite:

Michael D. Ekstrand. 2020. LensKit for Python: Next-Generation Software for Recommender Systems Experiments. In Proceedings of the 29th ACM International Conference on Information and Knowledge Management (CIKM '20). DOI:10.1145/3340531.3412778. arXiv:1809.03125 [cs.IR].

[!NOTE]

LensKit had significant changes in the 2025.1 release. See the Migration Guide for details.

Installing

To install the current release with uv (recommended):

$ uv pip install lenskit

Or, to add it to your project's dependencies and virtual environment:

$ uv add lenskit

Classic pip also works:

$ python -m pip install lenskit

Then see Getting Started

Conda Packages

You can also install LensKit from conda-forge with pixi:

$ pixi add lenskit

Or conda:

$ conda install -c conda-forge lenskit

Development Version

To use the latest development version, you have two options. You can install directly from GitHub:

$ uv pip install -U git+https://github.com/lenskit/lkpy

Or you can use our PyPI index, by adding to pyproject.toml:

[[tool.uv.index]]
name = "lenskit"
url = "https://pypi.lenskit.org/lenskit-dev/"

Binary wheels of LensKit development (and release) versions are automatically pushed to this index, although they are not guaranteed to be permanently available. Reproducible code should generally depend on released versions published to PyPI.

Simplifying PyTorch installation

We also provide mirrors of the PyTorch package repositories that are filtered to only include PyTorch and directly supporting dependencies, without other packages that conflict with or mask packages from PyPI, and with fallbacks for other platforms (i.e., our CUDA indices include CPU-only MacOS packages). This makes it easier to install specific versions of PyTorch in your project with the index priority and fallthrough logic implemented by uv. To make your project only use CPU-based PyTorch, you can add to pyproject.toml:

[[tool.uv.index]]
name = "torch-cpu"
url = "https://pypi.lenskit.org/torch/cpu/"

Or CUDA 12.8:

[[tool.uv.index]]
name = "torch-gpu"
url = "https://pypi.lenskit.org/torch/cu128/"

These indices provide the same package distributions as the official PyTorch repositories (in fact, they link directly to the PyTorch packages). They are just an alternate index view that reduces some package conflicts.

Developing

To contribute to LensKit, clone or fork the repository, get to work, and submit a pull request. We welcome contributions from anyone; if you are looking for a place to get started, see the issue tracker.

Our development workflow is documented in the wiki; the wiki also contains other information on developing LensKit. User-facing documentation is at https://lkpy.lenskit.org.

We use uv for developing LensKit and managing development environments. Our pyproject.toml file contains the Python development dependencies; you also need a working Rust compiler (typically via rustup). Before setting up to work on LensKit, you therefore need:

  • Git
  • uv
  • rustup and a working Rust compiler (rustup install stable)
  • A working C compiler compatible with Python
    • On Windows, this is either Visual Studio (with C++ development) or the Visual C++ Build Tools. See the Rustup Windows install instructions for details.
    • On Mac, install Xcode.
    • On Linux, see your system package manager instructions.
Windows

On Windows, you can install dependencies (except for the Visual C++ tools) with winget:

> winget install Git.Git astral-sh.uv Rustlang.Rustup
> rustup install stable-msvc
Mac

On Mac, you can install the dependencies with Homebrew:

$ brew install git uv rustup

Once you have the dependencies installed, set up your LensKit development environment:

$ uv venv -p 3.12
$ uv sync

If you want all extras (may not work on Windows), do:

$ uv sync --all-extras

You can then activate the virtual environment to have the tools available and run tools like pytest:

$ . ./.venv/bin/activate

Testing Changes

You should always test your changes by running the LensKit test suite:

pytest tests

If you want to use your changes in a LensKit experiment, you can locally install your modified LensKit into your experiment's environment. We recommend using separate environments for LensKit development and for each experiment; you will need to install the modified LensKit into your experiment's repository:

uv pip install -e /path/to/lkpy

Resources

Acknowledgements

This material is based upon work supported by the National Science Foundation under Grant No. IIS 17-51278. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lenskit-2026.1.0.tar.gz (3.0 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

lenskit-2026.1.0-cp314-cp314t-manylinux_2_28_x86_64.whl (10.0 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ x86-64

lenskit-2026.1.0-cp314-cp314t-manylinux_2_28_aarch64.whl (9.5 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

lenskit-2026.1.0-cp314-cp314t-macosx_11_0_arm64.whl (3.2 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

lenskit-2026.1.0-cp312-abi3-win_amd64.whl (3.4 MB view details)

Uploaded CPython 3.12+Windows x86-64

lenskit-2026.1.0-cp312-abi3-manylinux_2_28_x86_64.whl (10.0 MB view details)

Uploaded CPython 3.12+manylinux: glibc 2.28+ x86-64

lenskit-2026.1.0-cp312-abi3-manylinux_2_28_aarch64.whl (9.5 MB view details)

Uploaded CPython 3.12+manylinux: glibc 2.28+ ARM64

lenskit-2026.1.0-cp312-abi3-macosx_11_0_arm64.whl (3.2 MB view details)

Uploaded CPython 3.12+macOS 11.0+ ARM64

File details

Details for the file lenskit-2026.1.0.tar.gz.

File metadata

  • Download URL: lenskit-2026.1.0.tar.gz
  • Upload date:
  • Size: 3.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lenskit-2026.1.0.tar.gz
Algorithm Hash digest
SHA256 69ea9d3c5a46797d7a6f5fcb3caf27e10bdcb2292a1d7da260a4941a9a1db214
MD5 bfe4da05d1c2a309a8a486b08efd19cc
BLAKE2b-256 c7c9091982bd5998f64bf4788d47fe41831b2be10e43a315f2d37346ca0b61d2

See more details on using hashes here.

Provenance

The following attestation bundles were made for lenskit-2026.1.0.tar.gz:

Publisher: package.yml on lenskit/lkpy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lenskit-2026.1.0-cp314-cp314t-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for lenskit-2026.1.0-cp314-cp314t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5e36e366863a8874c8b6ba10419c02f22a704e1c5f6191dfd12b8eef9ad350ff
MD5 6e95c562cd86d48a201633e9ffa324a9
BLAKE2b-256 f40566c090b7094998a65f9096e6757b60459579e58aacbc973c79a8adc8fc0b

See more details on using hashes here.

Provenance

The following attestation bundles were made for lenskit-2026.1.0-cp314-cp314t-manylinux_2_28_x86_64.whl:

Publisher: package.yml on lenskit/lkpy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lenskit-2026.1.0-cp314-cp314t-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for lenskit-2026.1.0-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3020ddc9754835e6effcd841d1d0d7e7ddea2e1326acdf7b0ab8fe1702fa7a11
MD5 f1251d719595755d63e260b37d2cf20f
BLAKE2b-256 aae019d8972b7d432e224c86fcc646892b47051e52a80ac59a5f232f5900a85e

See more details on using hashes here.

Provenance

The following attestation bundles were made for lenskit-2026.1.0-cp314-cp314t-manylinux_2_28_aarch64.whl:

Publisher: package.yml on lenskit/lkpy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lenskit-2026.1.0-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lenskit-2026.1.0-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7c6fd55de715c7e542e85b9be74978d1cc875f32bf16532a6d555aa9c0032699
MD5 9ba18d7fdcf546c7ac5836a3b38dc7b6
BLAKE2b-256 b9ed6eb6485cba06ddae35dded9f126faf582d1d406abf40537702228bed49a8

See more details on using hashes here.

Provenance

The following attestation bundles were made for lenskit-2026.1.0-cp314-cp314t-macosx_11_0_arm64.whl:

Publisher: package.yml on lenskit/lkpy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lenskit-2026.1.0-cp312-abi3-win_amd64.whl.

File metadata

  • Download URL: lenskit-2026.1.0-cp312-abi3-win_amd64.whl
  • Upload date:
  • Size: 3.4 MB
  • Tags: CPython 3.12+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lenskit-2026.1.0-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 c219348861ab975523ec538fe1e182a915dae4440bb8f430566bf322deb7d193
MD5 88ca9647dff672a9d1245291ae830a8f
BLAKE2b-256 70ad492c7009426a3ac8a2bac94f824262ea8196c0910d282891826265e26344

See more details on using hashes here.

Provenance

The following attestation bundles were made for lenskit-2026.1.0-cp312-abi3-win_amd64.whl:

Publisher: package.yml on lenskit/lkpy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lenskit-2026.1.0-cp312-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for lenskit-2026.1.0-cp312-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f7988c8e7a89dd288be69c79e440208e473d166b5df0657951578c6871e5ed4c
MD5 69fd7a83b188dc2dd4ae8b4f64f7defd
BLAKE2b-256 9d68de9eb8703eabfb4bc5d7d12a37ec31361ca16e8df187cfe7ff21614c9c09

See more details on using hashes here.

Provenance

The following attestation bundles were made for lenskit-2026.1.0-cp312-abi3-manylinux_2_28_x86_64.whl:

Publisher: package.yml on lenskit/lkpy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lenskit-2026.1.0-cp312-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for lenskit-2026.1.0-cp312-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6beae6e6fab0e2c36fba06bf3b4e0f92c41ab4dee5bc28fdcc31af8e12e31449
MD5 5d1b30cdabf76c35b3bf0ce34ace004d
BLAKE2b-256 3eb88561eda68d3c89ca70b22e14621c746f464a80706340c96300ac553a2b1b

See more details on using hashes here.

Provenance

The following attestation bundles were made for lenskit-2026.1.0-cp312-abi3-manylinux_2_28_aarch64.whl:

Publisher: package.yml on lenskit/lkpy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lenskit-2026.1.0-cp312-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lenskit-2026.1.0-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bae58c14beb4ef238be28ce4c453526f54473627d1b284ce60640b9d2b6de2de
MD5 56a407055cc73fbba0e14a8749ee07e8
BLAKE2b-256 eee002eb33532129fd31814d60d5156147ead21f4ee4e9bfe02782736d80cfec

See more details on using hashes here.

Provenance

The following attestation bundles were made for lenskit-2026.1.0-cp312-abi3-macosx_11_0_arm64.whl:

Publisher: package.yml on lenskit/lkpy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page