PyDepM — Python Dependency Manager
Project description
PyDepM — Python Dependency Manager
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.jsonfor 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.tomlgeneration
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
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pydepm-1.0.5.tar.gz.
File metadata
- Download URL: pydepm-1.0.5.tar.gz
- Upload date:
- Size: 30.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f2b85db23749a69b9a6f42e93df0fac89584e807da8c1bbd188f32b6ec51e4eb
|
|
| MD5 |
af55bf49152d0c9439172b4a5c336d6e
|
|
| BLAKE2b-256 |
8088eb08597dda39098325266945c3a70520185068012ea46d2e5117b1fe51fc
|
File details
Details for the file pydepm-1.0.5-py3-none-any.whl.
File metadata
- Download URL: pydepm-1.0.5-py3-none-any.whl
- Upload date:
- Size: 31.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
661ba0e3487faf875db36d49113e70d65fce20a35c9e13b65a4bf0f47a321df0
|
|
| MD5 |
d3392190f7d385e88435e3d2c904a0e5
|
|
| BLAKE2b-256 |
511683e06e46280ce1bc3708f0ebfe8a67fc8a3d4f508c078155a169633bb6e3
|