VNMA (Vendor Manager)
Status: Beta (v0.2.0)
Platform Support: CPython 3.11+ (Tested on Windows and Linux)
vnma is a dependency and vendoring manager for Python projects. It manages project dependencies inside a local, isolated vendor directory (vendor/ or vendor_vnma/) instead of creating or replicating full Python virtual environments (venv).
Overview
Traditional Python development relies on virtual environments, which duplicate the interpreter executable and standard library layout. While effective for system isolation, virtual environments introduce overhead in container builds, portable deployments, and shared team workflows where only runtime libraries are required.
vnma addresses this by downloading, building, and extracting platform-compatible wheels directly into the project directory while maintaining runtime path isolation and native binary compatibility.
Key Capabilities
- Hermetic Path Isolation: Sanitizes
sys.pathduring execution to prevent accidental leakage from system or usersite-packages. - Static O(1) Binary Resolution: Avoids filesystem tree traversal at startup by recording precomputed dynamic link library (DLL/SO) paths during installation.
- Transitive DAG Resolution: Evaluates version constraints across dependency trees, evaluating PEP 508 environment markers and detecting version conflicts.
- Explicit Configuration (
vnma_config.toml): Allows local packages and complex dependencies to specify exact DLL directories, entry points, and export boundaries without heuristic guesswork. - Multi-Source Support: Installs packages from PyPI, local filesystem paths (monorepos), and remote Git repositories.
- Reproducible Builds: Emits a deterministic
vnma.locktracking versions, sources, and binary metadata. - Automatic IDE Configuration: Generates configuration for Visual Studio Code (
extraPaths) and JetBrains PyCharm (.ideaand.env).
Current Status: Beta Notice
vnma is currently in Beta. While core workflows—such as installing native packages (pygame-ce), complex transitive graphs (requests), and local source trees—have been validated, edge cases exist across different platforms, compilers, and non-standard packaging layouts.
Users are encouraged to verify builds in testing environments before deploying to critical production pipelines. See docs/en/02-Advice/01-beta-status.md for detailed considerations.
Quickstart
Installation
Install vnma directly from PyPI using pip:
pip install vnma
Or for development:
pip install -e .
Basic Commands
Initialize a project:
vnma init
Install a package from PyPI:
vnma install requests
Install a package from a local directory:
vnma install "C:/path/to/my-library"
Execute a script using the vendored runtime:
vnma run main.py
List installed packages:
vnma list
Prune orphaned packages not declared in vnma.toml:
vnma prune --dry-run
vnma prune --yes
Restore dependencies in offline mode:
vnma install --offline
Update dependencies (ignoring pinned packages):
# Update both PyPI and Git dependencies
vnma update
# Update only PyPI dependencies
vnma update --pip
# Update only Git repositories (pulls latest branch commit)
vnma update --git
Documentation
Full documentation is available in the docs/ directory:
- Usage Guide: docs/en/01-Use/
- Design & Guidance: docs/en/02-Advice/
License
This software is released under a modified permissive license. Commercial resale of the tool itself is prohibited, and bundled distributions must retain reciprocal licensing. See LICENSE for terms.
Metadata
Release files for vnma 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| vnma-0.2.1.tar.gz | 59.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| vnma-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 109.8 kB
Release files / vnma-0.2.1.tar.gz
| Download URL | vnma-0.2.1.tar.gz |
|---|---|
| Size | 59.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7aa9a8a42626903cc6a93a319da338730e84a217ec740c90015c0bef535a8791
|
|
BLAKE2b-256 checksum How to use checksums |
5dba182941b5fc172c1bdd656c1f75b2e8673da2e4c4d1e9a8e49729c37171b5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|
Release files / vnma-0.2.1-py3-none-any.whl
| Download URL | vnma-0.2.1-py3-none-any.whl |
|---|---|
| Size | 50.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
490d836c21d4f61edf1d309a3a371577b233292c173a30b5f7cd9f8d468eba25
|
|
BLAKE2b-256 checksum How to use checksums |
770fc026bfb968699d4f37dba31803810675150af7034fae352432bd8dd587b8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|