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-2025.7.0b1.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-2025.7.0b1-cp311-abi3-win_amd64.whl (2.7 MB view details)

Uploaded CPython 3.11+Windows x86-64

lenskit-2025.7.0b1-cp311-abi3-win32.whl (2.5 MB view details)

Uploaded CPython 3.11+Windows x86

lenskit-2025.7.0b1-cp311-abi3-manylinux_2_28_x86_64.whl (7.9 MB view details)

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

lenskit-2025.7.0b1-cp311-abi3-manylinux_2_28_aarch64.whl (7.3 MB view details)

Uploaded CPython 3.11+manylinux: glibc 2.28+ ARM64

lenskit-2025.7.0b1-cp311-abi3-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

lenskit-2025.7.0b1-cp311-abi3-macosx_10_12_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.11+macOS 10.12+ x86-64

File details

Details for the file lenskit-2025.7.0b1.tar.gz.

File metadata

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

File hashes

Hashes for lenskit-2025.7.0b1.tar.gz
Algorithm Hash digest
SHA256 d68a8b340f67529b2d8e774535e44bc13129776a80e29c2078879c5c1ec27636
MD5 fe0bc4fc418872a77afe713c4314d11a
BLAKE2b-256 b99c4f0dfba2468d729539ee70f5980f4c436b7853f3639b18a8758190b970ff

See more details on using hashes here.

Provenance

The following attestation bundles were made for lenskit-2025.7.0b1.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-2025.7.0b1-cp311-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for lenskit-2025.7.0b1-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 0e3b2c90daf64ffbebf87ac8e55cf9f9ed613d0735617276dcb3849ea24cb6d1
MD5 c9625157850c49be359c71e4e502de12
BLAKE2b-256 bbb5631b83c0f54e41c112e6f1bc1535fbce3033a683d21fea6661e7849a88f2

See more details on using hashes here.

Provenance

The following attestation bundles were made for lenskit-2025.7.0b1-cp311-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-2025.7.0b1-cp311-abi3-win32.whl.

File metadata

  • Download URL: lenskit-2025.7.0b1-cp311-abi3-win32.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: CPython 3.11+, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for lenskit-2025.7.0b1-cp311-abi3-win32.whl
Algorithm Hash digest
SHA256 3b1121228ac10f46e79c7848e91689aa466562fb7a8d9a32a59973d047481219
MD5 22181e7f3ce6ce4026c14e36f6c79770
BLAKE2b-256 35e87baf60a5908a5ac57911197184a131c82b3e8ba1497e3ddf559bbf365077

See more details on using hashes here.

Provenance

The following attestation bundles were made for lenskit-2025.7.0b1-cp311-abi3-win32.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-2025.7.0b1-cp311-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for lenskit-2025.7.0b1-cp311-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cea9efdd9ee13c241da9c3652d56891509fdff1006900cb025fbe02269248dc3
MD5 7ba7a65d6aa89394dbaeda36cee58ed2
BLAKE2b-256 a7ca448bf2f27e6f1d8b0ad78b268be8d20ed5a562f3ca6941bfa094cacdcb7f

See more details on using hashes here.

Provenance

The following attestation bundles were made for lenskit-2025.7.0b1-cp311-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-2025.7.0b1-cp311-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for lenskit-2025.7.0b1-cp311-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 219de00d571c0de586d215f94908ecd3df11bc9458e1a569f8caf1e701aea2ea
MD5 a1460e4c2c802d01d961f30d2ebae848
BLAKE2b-256 df5bbab90fec71753cd457675ed9c17ea6b9bf1f670cb795f8582f12e122ae46

See more details on using hashes here.

Provenance

The following attestation bundles were made for lenskit-2025.7.0b1-cp311-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-2025.7.0b1-cp311-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lenskit-2025.7.0b1-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3d04bdeaf65ea0cfbbfbd758aeaee6dfbdb2b820c083fbf386fa28e03b27a92e
MD5 7a4ccde161b240fb3907f27854f3b453
BLAKE2b-256 8850b8dec3c2e5919a263f0c3d9bec2ab4f271f45df219a7dcab1288214d86b8

See more details on using hashes here.

Provenance

The following attestation bundles were made for lenskit-2025.7.0b1-cp311-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.

File details

Details for the file lenskit-2025.7.0b1-cp311-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for lenskit-2025.7.0b1-cp311-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 930453c06af2de7ad3f6e4a06fa7d1549893bdb665e3c172b2628e759c246299
MD5 85b061f05bf918b5bf40bfeb5bc024a6
BLAKE2b-256 874877f520a5bddd34195fef002058e26b1d1eb07f7469c51a95ebe73105db58

See more details on using hashes here.

Provenance

The following attestation bundles were made for lenskit-2025.7.0b1-cp311-abi3-macosx_10_12_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.

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