Skip to main content

PyDepM — Python Dependency Manager

Project description

PyDepM — Python Dependency Manager

PyPI version Python versions License: MIT

PyDepM (Python Dependency Manager) is a modern, dependency management tool for Python projects that combines the simplicity of npm with Python's powerful packaging ecosystem. It provides two main tools: pydep for dependency management and project scaffolding, and pydepx for enhanced script execution.

Features

🚀 pydep - Core Dependency Manager

  • Project Scaffolding: Initialize apps or modules with sensible defaults
  • Dependency Management: Add, remove, and update dependencies with version pinning
  • Virtual Environment Management: Automatic venv creation and management
  • Lockfile Support: Generate and use pypackage-lock.json for reproducible installs
  • Build System: Build wheels, sdists, and PyInstaller executables
  • Security Auditing: Vulnerability scanning with pip-audit
  • Script Runner: npm-like script execution from pypackage.json
  • Dependency Analysis: Understand why packages are installed with pydep why

pydepx - Enhanced Execution Tool

  • Rich Output: Beautiful, colorized command output with real-time streaming
  • Smart Module Execution: Automatic Python module detection and execution
  • Cross-Platform: Consistent behavior on Windows, macOS, and Linux
  • Signal Handling: Graceful interrupt handling for long-running processes
  • Encoding Support: Robust handling of various terminal encodings

Installation

pip install pydepm

This installs both pydep and pydepx commands globally.

Quick Start

Create a New Project

# Create an application
pydep init --type app

# Or create a reusable module
pydep init my-module --type module 

Manage Dependencies

# Install all dependencies
pydep install

# Add a package
pydep add requests
pydep add "flask>=2.0.0"

# Add with caret syntax (equivalent to npm's ^)
pydep add "numpy^1.24.0"

# Remove a package
pydep remove requests

Run Scripts

# Run scripts defined in pypackage.json
pydep run dev
pydep run test

# Use pydepx for enhanced execution
pydepx black .                    # Run code formatter
pydepx -m pytest tests/          # Run tests as module
pydepx -m http.server 8000       # Run HTTP server

Table of Contents

Project Structure

PyDepM uses a pypackage.json file to manage project configuration:

{
  "type": "app",
  "name": "my-project",
  "version": "0.1.0",
  "description": "My Python application",
  "dependencies": {
    "requests": "^2.28.0",
    "rich": "==12.6.0"
  },
  "scripts": {
    "dev": "python main.py",
    "test": "pytest tests/"
  },
  "useGlobalDeps": false
}

pydep Commands

Project Management

pydep init [name] [--type app|module]  # Initialize new project
pydep install [-e] [-g]                # Install dependencies
pydep build                            # Build package/executable

Dependency Management

pydep add <package> [--global]         # Add package(s)
pydep remove <package> [--global]      # Remove package(s)
pydep update [packages] [--global]     # Update packages
pydep list                             # List installed packages
pydep why <package>                    # Show dependency reason
pydep outdated                         # Check for outdated packages

Security & Quality

pydep audit [--json] [--extended]      # Security audit
pydep convert --to lock [--hashes]     # Generate lockfile
pydep convert --to toml [-o dir]       # Generate pyproject.toml

Script Execution

pydep run <script>                     # Run project script

pydepx Usage

pydepx enhances command execution with rich output and better handling:

# Direct command execution
pydepx black --check .
pydepx pylint src/

# Module execution (python -m style)
pydepx -m pytest -v tests/
pydepx -m pip install package
pydepx -m http.server --bind 127.0.0.1 8000

# Python file execution
pydepx script.py --arg1 value1

Configuration

Project Types

Application (app): Standalone applications with executable support

  • Default project type
  • Can build executables with PyInstaller
  • Optional pyproject.toml generation

Module (module): Reusable Python packages

  • Always generates pyproject.toml
  • Supports setuptools packaging
  • CLI entry point generation

Virtual Environments

By default, PyDepM creates and uses virtual environments. You can override this:

# Use global Python site-packages for a command
pydep install --global
pydep add requests --global

# Configure project to always use global deps
pydep init --type app --global-deps

Advanced Features

Lockfile Generation

# Fast generation (no hashes)
pydep convert --to lock

# Include SHA256 hashes for security
pydep convert --to lock --hashes

Executable Building

For app-type projects, configure executables in pypackage.json:

{
  "executable": {
    "target": "main.py",
    "parameters": ["--onefile", "--name=myapp"],
    "output": "dist/"
  }
}

Build with:

pydep build

Custom pyproject.toml

For advanced use cases, you can provide custom pyproject.toml content:

{
  "pyproject": {
    "[project.urls]": "https://github.com/ZtaMDev/PyDepM.git"
  }
}

Examples

Complete Workflow

# Create and set up a new module
pydep init --type module my-package
cd my-package

# Add dependencies
pydep add rich
pydep add "pytest^7.0.0" --dev

# Install everything
pydep install

# Run tests
pydep run test
# or with enhanced output
pydepx -m pytest tests/

# Build package
pydep build

# Security audit
pydep audit

Development Scripts

Define scripts in pypackage.json:

{
  "scripts": {
    "dev": "python main.py",
    "test": "pytest tests/ -v",
    "lint": "pylint src/",
    "format": "black . && isort ."
  }
}

Run with: pydep run lint or pydepx -m black .

Contributing

We welcome contributions! Please see our GitHub repository for:

  • Bug reports and feature requests
  • Pull requests and code contributions
  • Documentation improvements

Development Setup

git clone https://github.com/ZtaMDev/PyDepM.git
cd PyDepM
pip install -e .

License

MIT License - see LICENSE for details.


PyDepM makes Python dependency management intuitive and powerful, combining the best practices from modern development workflows with Python's rich ecosystem.

Project details


Download files

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

Source Distribution

pydepm-1.0.4.tar.gz (30.8 kB view details)

Uploaded Source

Built Distribution

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

pydepm-1.0.4-py3-none-any.whl (31.2 kB view details)

Uploaded Python 3

File details

Details for the file pydepm-1.0.4.tar.gz.

File metadata

  • Download URL: pydepm-1.0.4.tar.gz
  • Upload date:
  • Size: 30.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for pydepm-1.0.4.tar.gz
Algorithm Hash digest
SHA256 cb8e3270bc32653c4d21803e5ddc608939f8cdcd13dee5fc53bbb3b85a16fe9c
MD5 bc2886471c51b3159a1b6c2ec34ca038
BLAKE2b-256 81ee82cfded334d32e0928a32cb91c2b614b85bda6ba057375f5b58a66a4910d

See more details on using hashes here.

File details

Details for the file pydepm-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: pydepm-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 31.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for pydepm-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 72c8f40e3eb9c531a8050b42db787204e78893b3a7e1fb8d717db6bad718aaa9
MD5 49757138013066ac8094483658d9899d
BLAKE2b-256 e73b0e60dd0806be10aac9c7134cd735885e7ff3bfece10d7bbba7231bdc8ce1

See more details on using hashes here.

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