<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/pnpm-12-5-vybkgccrg" -->

---
title: pnpm 12.5 | daily.dev
description: pnpm 12.5 significantly expands Python support: it can install a project's own package editable, share one virtual environment across a uv workspace,...
canonical: https://daily.dev/posts/pnpm-12-5-vybkgccrg
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: pnpm 12.5 | daily.dev
og:description: pnpm 12.5 significantly expands Python support: it can install a project's own package editable, share one virtual environment across a uv workspace,...
og:url: https://daily.dev/posts/pnpm-12-5-vybkgccrg
og:image: https://api.daily.dev/og/posts/VybKGcCrG.png
og:image:alt: pnpm 12.5
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# pnpm 12.5

**[Fast, disk space efficient package manager \| pnpm](https://daily.dev/sources/pnpm-blog)** · 5 min read · 30 upvotes · 3 comments

## Summary

pnpm 12.5 significantly expands Python support: it can install a project's own package editable, share one virtual environment across a uv workspace, auto-download python-build-standalone interpreters when none match, and generate a single lockfile covering multiple platforms and Python versions. pnpm add now accepts Package URLs (e.g. pkg:npm/express@4.18.2) and registries can be scoped by ecosystem (npm, cargo, pypi), replacing the old python.indexUrl/cargo.indexUrl settings. Other additions include machine-wide concurrencyGroups for task orchestration, tool mirror configuration for Node.js/Bun/Python, and pnpm cache prune to remove obsolete registry metadata. Numerous bug fixes cover tarball integrity collisions, frozen install filters, lockfile Git conflict markers, Cargo source overrides with recursive submodule vendoring, and pnpm audit hangs.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://pnpm.io/blog/releases/12.5>

## Questions this post answers

### How does pnpm 12.5 handle Python interpreter selection for a project?

pnpm install chooses an interpreter satisfying each project's requires-python, preferring .python-version when present, and different projects can use different interpreters unless python.executable pins one globally. When no installed interpreter fits, pnpm downloads a shared python-build-standalone interpreter, controlled by the runtimeOnFail setting (download, error, warn, or ignore).

_Developers juggling multiple Python versions in a monorepo can follow pnpm's Python tooling changes on daily.dev._

### Can pnpm add packages using Package URLs (purl) syntax?

Yes, as of pnpm 12.5, pnpm add accepts Package URLs such as pkg:npm/express@4.18.2, writing each dependency to its ecosystem's manifest. The pkg prefix is now a reserved registry alias regardless of case, and registries can be scoped by ecosystem (npm, cargo, pypi) instead of using the older python.indexUrl, python.extraIndexUrls, and cargo.indexUrl settings.

_Teams standardizing dependency installs across ecosystems can track pnpm's registry changes on daily.dev._

### How do I share one Python virtual environment across a uv workspace with pnpm?

Workspace members declared under [tool.uv.workspace] can share one environment; pnpm resolves every member into a single pylock.toml and one .venv at the workspace root. Conflicting dependency requirements produce an error naming the affected members, while independent per-project environments remain the default behavior.

_Anyone managing polyglot uv and pnpm workspaces can follow these workflow changes on daily.dev._

## Community discussion

Top comments from developers on daily.dev.

**@trevorsuna** · 0 upvotes

> The shared Python environment and cross-platform lockfile sound especially useful for mixed-language repos. I would try the workspace flow in CI first, where interpreter selection and registry settings are easiest to reproduce, then compare lockfile churn across macOS and Linux.

**@ristotoldsep** · 0 upvotes

> One lockfile for npm, Cargo and PyPI? Dependency chaos is now multilingual.

**@agustinbarrientos** · 0 upvotes

> Nice! I'd suggest adding a CI job that installs the Python workspace with an empty store. This helps make sure a cached interpreter doesn't hide a missing platform wheel.

## Similar posts on daily.dev

- [pnpm 12.4](https://daily.dev/posts/pnpm-12-4-nh51lpsx4) · Fast, disk space efficient package manager \| pnpm · 15 upvotes · 1 comments
- [pnpm 12.13.0](https://daily.dev/posts/pnpm-12-13-0-byetxpvui) · Fast, disk space efficient package manager \| pnpm · 0 upvotes · 0 comments
- [pnpm 11 cuts the npm umbilical cord](https://daily.dev/posts/pnpm-11-cuts-the-npm-umbilical-cord-vhucinbuf) · Bytes by ui.dev · 50 upvotes · 5 comments
- [pnpm 11 Adds Supply Chain Protection Defaults for Minimum Re...](https://daily.dev/posts/pnpm-11-adds-supply-chain-protection-defaults-for-minimum-re--wxgk3vhhu) · Socket · 101 upvotes · 6 comments

---

Tags: [#python](https://daily.dev/tags/python), [#nodejs](https://daily.dev/tags/nodejs), [#pnpm](https://daily.dev/tags/pnpm)

[View this post on daily.dev](https://daily.dev/posts/pnpm-12-5-vybkgccrg)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"pnpm 12.5","url":"https://daily.dev/posts/pnpm-12-5-vybkgccrg","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/pnpm-12-5-vybkgccrg"},"datePublished":"2026-09-18T17:56:32.694Z","dateModified":"2026-09-18T17:56:56.450Z","description":"pnpm 12.5 significantly expands Python support: it can install a project's own package editable, share one virtual environment across a uv workspace,...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/63763758f3e74381d631e88f7667e808?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/63763758f3e74381d631e88f7667e808?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Fast, disk space efficient package manager | pnpm","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Fast, disk space efficient package manager | pnpm","logo":"https://media.daily.dev/image/upload/s--JKuzGOiX--/f_auto,q_auto/v1787487440/logos/pnpm-blog?_a=BAMAMicg0","url":"https://daily.dev/sources/pnpm-blog"},"commentCount":3,"discussionUrl":"https://daily.dev/posts/pnpm-12-5-vybkgccrg","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":30},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":3}],"keywords":"python,nodejs,pnpm","timeRequired":"PT5M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Fast, disk space efficient package manager | pnpm","item":"https://daily.dev/sources/pnpm-blog"},{"@type":"ListItem","position":3,"name":"pnpm 12.5"}]}
{"@context":"https://schema.org","@type":"WebPage","@id":"https://daily.dev/posts/pnpm-12-5-vybkgccrg","comment":[{"@type":"Comment","text":"The shared Python environment and cross-platform lockfile sound especially useful for mixed-language repos. I would try the workspace flow in CI first, where interpreter selection and registry settings are easiest to reproduce, then compare lockfile churn across macOS and Linux.","datePublished":"2026-09-22T02:45:07.995Z","url":"https://daily.dev/posts/VybKGcCrG#c-knYTu7IqG","author":{"@type":"Person","name":"Trevor Suna","url":"https://daily.dev/trevorsuna","image":"https://media.daily.dev/image/upload/s--dZ7gXxpp--/f_auto/v1784081551/avatars/avatar_EMoP47rpuw8DNjhp6R1b6?_a=BAMAMicg0"}},{"@type":"Comment","text":"One lockfile for npm, Cargo and PyPI? Dependency chaos is now multilingual.","datePublished":"2026-09-22T07:31:08.183Z","url":"https://daily.dev/posts/VybKGcCrG#c-I5tyiwXTk","author":{"@type":"Person","name":"Risto Tõldsep","url":"https://daily.dev/ristotoldsep","image":"https://lh3.googleusercontent.com/a/ACg8ocLDWc6mZn0JwNmXXw6WY0L_HJ6pegzRttooC5VgtXESHSj3MNYx=s96-c"}},{"@type":"Comment","text":"Nice! I’d suggest adding a CI job that installs the Python workspace with an empty store. This helps make sure a cached interpreter doesn’t hide a missing platform wheel.","datePublished":"2026-09-23T07:43:38.241Z","url":"https://daily.dev/posts/VybKGcCrG#c-jdnSB1nuP","author":{"@type":"Person","name":"Agustin Barrientos","url":"https://daily.dev/agustinbarrientos","image":"https://media.daily.dev/image/upload/s--5ayxQnqn--/f_auto/v1788281802/avatars/avatar_wQYYVe5Tbj0NJ7C7qPoa8?_a=BAMAMicg0"}}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/pnpm-12-5-vybkgccrg#faq","mainEntity":[{"@type":"Question","name":"How does pnpm 12.5 handle Python interpreter selection for a project?","acceptedAnswer":{"@type":"Answer","text":"pnpm install chooses an interpreter satisfying each project's requires-python, preferring .python-version when present, and different projects can use different interpreters unless python.executable pins one globally. When no installed interpreter fits, pnpm downloads a shared python-build-standalone interpreter, controlled by the runtimeOnFail setting (download, error, warn, or ignore). Developers juggling multiple Python versions in a monorepo can follow pnpm's Python tooling changes on daily.dev."}},{"@type":"Question","name":"Can pnpm add packages using Package URLs (purl) syntax?","acceptedAnswer":{"@type":"Answer","text":"Yes, as of pnpm 12.5, pnpm add accepts Package URLs such as pkg:npm/express@4.18.2, writing each dependency to its ecosystem's manifest. The pkg prefix is now a reserved registry alias regardless of case, and registries can be scoped by ecosystem (npm, cargo, pypi) instead of using the older python.indexUrl, python.extraIndexUrls, and cargo.indexUrl settings. Teams standardizing dependency installs across ecosystems can track pnpm's registry changes on daily.dev."}},{"@type":"Question","name":"How do I share one Python virtual environment across a uv workspace with pnpm?","acceptedAnswer":{"@type":"Answer","text":"Workspace members declared under [tool.uv.workspace] can share one environment; pnpm resolves every member into a single pylock.toml and one .venv at the workspace root. Conflicting dependency requirements produce an error naming the affected members, while independent per-project environments remain the default behavior. Anyone managing polyglot uv and pnpm workspaces can follow these workflow changes on daily.dev."}}]}
```

