psp is a blazing fast command line utility to scaffold your Python project, written in Rust.
- β‘οΈ 1-100x faster compared to other scaffolding tools
- π οΈ
pyproject.tomlsupport - π€ Python 3.14 compatibility
- π Scaffolding file and folder structures for your Python project
- ποΈ Unit-test and pytest support
- π§ͺ Create a virtual environment
- π§ Automagically dependencies installation
- πͺ Add build and deploy dependencies to distribute the package
- π tox configuration supports and remotes CI like CircleCI and TravisCI
- β¨οΈ MkDocs and Sphinx documentation support
- π§° Initialize git repository and
gitignorefile - π GitHub and Gitlab remote repository support
- π Create
README,LICENSE,CONTRIBUTING,CODE_OF_CONDUCTandCHANGESfiles - π³ Create
DockerfileandContainerfilefor your project - π‘ Can use quick, simple and full argument for rapid configuration
- πΎ Create
$HOME/.psp.envand$PWD/.envfiles with your customizations - ποΈ Can use some
PSP_variables to control your defaults - π¦ Support
pip,condaanduvpackage manager
The result is:
$> tree wtf/ --filelimit=19 -a
wtf # Project folder
βββ LICENSE.md # License file
βββ pyproject.toml # Python package configuration file
βββ README.md # Readme file
βββ CHANGES.md # List of changes
βββ .circleci # CI folder
β βββ config.yml # CI configuration file
βββ CODE_OF_CONDUCT.md # Code of Conduct
βββ CONTRIBUTING.md # Contributing guide lines
βββ Containerfile # Standard container file for build image
βββ Dockerfile # Docker container file for build image
βββ Makefile # Makefile for command make; make help
βββ requirements.txt # Dependencies list used by third programs
βββ docs # Documentation folder: Sphinx/MKDocs
β βββ build
β βββ make.bat
β βββ Makefile
β βββ source
β βββ conf.py
β βββ index.rst
β βββ _static
β βββ _templates
βββ .git # Git folder
β βββ branches
β βββ config
β βββ description
β βββ HEAD
β βββ hooks [14 entries exceeds filelimit, not opening dir]
β βββ info
β β βββ exclude
β βββ objects
β β βββ info
β β βββ pack
β βββ refs
β βββ heads
β βββ tags
βββ .github # Github issue and merge templates
β βββ ISSUE_TEMPLATE
β β βββ bug.yml
β β βββ config.yml
β β βββ feature.yml
β βββ PULL_REQUEST_TEMPLATE
β βββ pull_request_template.md
βββ .gitignore # Git ignore file
βββ .dockerignore # Docker ignore file
βββ .containerignore # Container ignore file
βββ wtf # Python package
β βββ __init__.py
βββ tests # Tests package for modules
β βββ __init__.py
β βββ test_wtf.py # Test module "test_<name_python_package>"
βββ tox.ini # Tox configuration files
βββ samples
β βββ wtf_sample.py # Sample code of package "<name_python_package>_sample"
βββ .venv # Virtual environment
βββ bin [33 entries exceeds filelimit, not opening dir]
βββ include
β βββ python3.14
βββ lib
β βββ python3.14
β βββ site-packages [68 entries exceeds filelimit, not opening dir]
βββ lib64 -> lib
βββ pyvenv.cfg
29 directories, 44 filesAnd git status is:
$> git status
On branch main
No commits yet
...
$> git remote get-url origin
[email protected]:MatteoGuadrini/test.gitFor help message, type:
$> psp help
psp (Python Scaffolding Projects), version 0.4.0
usage: psp [shortcut]
ie: psp [help|quick|simple|full]
shortcut:
help: print this help message
quick: enables a rapid setup (few options included)
simple: enables a basic setup (only Python package)
full: enables a full setup (all options)
links:
repository: https://github.com/MatteoGuadrini/psp
documentation: https://psp.readthedocs.io/
variables:
["PSP_GIT","PSP_GIT_REMOTE","PSP_GIT_USER"]
environments:
Python version: 3.14Note
More details for shortcuts, variables and other things, available in official documentation: psp docs
psp has four mandatory prerequisetes installed on own machine:
gitpython3pipcurl(Linux/MacOS only)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install python gitwinget install -e --id Git.Git
winget install -e --id Python.Python.3.14sudo apt install -y python3 python3-pip git curlsudo dnf install -y python3 python3-pip git curlsudo pacman -Qi python3 python3-pip git curlTo install with pip:
pip install psp-scaffoldTo install compiled file into your machine, download it:
For all users (required root access):
sudo -i
curl -L https://github.com/MatteoGuadrini/psp/releases/download/v0.4.0/psp_linux -o /usr/bin/psp
chmod +x /usr/bin/pspFor current user:
curl -L https://github.com/MatteoGuadrini/psp/releases/download/v0.4.0/psp_linux -o $HOME/.local/bin/psp
chmod +x $HOME/.local/bin/pspsudo su -
curl -L https://github.com/MatteoGuadrini/psp/releases/download/v0.4.0/psp_macos -o /usr/bin/psp
chmod +x /usr/bin/pspFor all users (required Administrator):
iwr -OutFile "C:\Windows\system32\psp.exe" "https://github.com/MatteoGuadrini/psp/releases/download/v0.4.0/psp_windows"For current user:
mkdir "$($Env:USERPROFILE)\bin"
[System.Environment]::SetEnvironmentVariable("PATH", $Env:PATH + ";$($Env:USERPROFILE)\bin","USER")
iwr -OutFile "$($Env:USERPROFILE)\bin\psp.exe" "https://github.com/MatteoGuadrini/psp/releases/download/v0.4.0/psp_windows"If you want to install OS package, follow instructions for your Operating System:
For Debian/Ubuntu:
curl -L https://github.com/MatteoGuadrini/psp/releases/download/v0.4.0/psp.deb -o psp.deb
sudo dpkg -i psp.debFor Fedora/Mageia/OpenSuse:
sudo rpm -i https://github.com/MatteoGuadrini/psp/releases/download/v0.4.0/psp.rpmInstead, if you compile this project as own, follow this steps:
git clone https://github.com/MatteoGuadrini/psp.git
cd psp && cargo build --release && sudo cp -v target/release/psp /usr/bin/psp && chmod +x /usr/bin/pspor build with script:
git clone https://github.com/MatteoGuadrini/psp.git
cd psp
# Build
./build_psp.sh
# Copy binary
sudo cp -v target/release/psp /usr/bin/psp && chmod +x /usr/bin/psp
# Install rpm
sudo rpm -i /tmp/psp_rpm/psp.rpm
# Instal deb
sudo dpkg -i /tmp/psp_deb/psp.debIf you want to use psp in a containerized environment, follow this:
# Clone...
git clone https://github.com/MatteoGuadrini/psp.git
# Build...
cd psp && docker build . -t psp:latest
# Run...
docker run -it --rm -v ~/python_projects:/psp:z localhost/psp:latestYou can use .env files and environment variables:
# .env file
docker run -it --rm -v ~/python_projects:/psp:z -v ~/python_projects/.env:/psp/.env localhost/psp:latest
# PSP_ environment variables
docker run -it --rm -v ~/python_projects:/psp:z -e "PSP_GIT=true" -e "PSP_PYVER=1.0.0" localhost/psp:latest-
windowsoperating system support - Container support for psp program
-
condaanduvsupport -
hatchsupport -
docker-composeandkubernetessupport - command line flags support
- updating/merging project
- templating folder support
- YAML configuration file
psp is an open source project. Any contribution, It's welcome.
A great thanks.
For donations, press this
For me
For Telethon
The Telethon Foundation is a non-profit organization recognized by the Ministry of University and Scientific and Technological Research. They were born in 1990 to respond to the appeal of patients suffering from rare diseases. Come today, we are organized to dare to listen to them and answers, every day of the year.
This package is Treeware. If you use it in production, then we ask that you buy the world a tree to thank us for our work. By contributing to the Treeware forest youβll be creating employment for local families and restoring wildlife habitats.
Thanks to Jim Blandy, Jason Orendorff and Nora Tindall for writing the Programming Rust book that make up my Rust foundation.
Thanks to Tim McNamara for writing the Rust in Action book.
Thanks to Zed IDE and for license of RustRover offered by Jetbrains.
Special thanks go to my wife, who understood the hours of absence for this development. Thanks to my children, for the daily inspiration they give me and to make me realize, that life must be simple.
Thanks, Rust Community!

