Skip to main content

pip-package-creator

The 1-line way to create a complete, production-ready PyPI package — no templates to copy, no config to wrestle with.

pypkg asks you a few simple questions (package name, author, license, which tools you want), validates everything as you type, and builds the whole project for you: source layout, pyproject.toml, tests, linting, CI, docs — and even offers to git init and publish the first release.

Works on Windows, Linux and macOS. 🐍


🚀 Install (the 1 line)

pipx install pip-package-creator

Don't have pipx? Install it once with python -m pip install --user pipx, or use the plain-pip alternative below.

Alternatives

# classic pip (installs into your current Python)
python -m pip install --user pip-package-creator

# before the PyPI release, install straight from GitHub
python -m pip install git+https://github.com/1cz1/pip-package-creator

After installing you get the pypkg command:

pypkg --version

✨ Quick start

pypkg

That's it. The wizard walks you through everything:

  1. Package name — checked live against PyPI so you don't pick a taken name.
  2. Author info — automatically filled from your git config (press Enter).
  3. License, Python version, build backend — sensible defaults everywhere.
  4. Tooling — tick ruff, mypy, pytest, pre-commit with the spacebar.
  5. Finish optionsgit init, GitHub repo, editable install, build check.

Before anything is written to disk you see a review screen where you can edit any answer. Then pypkg scaffolds the project into a new folder named after your package.

Tip: just press Enter to accept every default — you'll have a working package in under a minute.


📦 What you get

your-package/
├── .github/workflows/
│   ├── ci.yml                 # lint + test on every push / PR
│   └── publish.yml            # build + publish to PyPI on version tags
├── docs/                      # mkdocs scaffold (optional)
├── src/your_package/          # src-layout (recommended)
│   ├── __init__.py            # friendly docstring, public API
│   ├── _version.py            # single source of truth for the version
│   ├── py.typed               # PEP 561 marker for type checkers
│   ├── core.py                # sample module with a documented function
│   └── cli.py                 # optional console-script entry point
├── tests/
│   └── test_core.py           # pytest tests wired into CI
├── .gitignore
├── .pre-commit-config.yaml    # optional
├── CHANGELOG.md
├── LICENSE
├── README.md
└── pyproject.toml             # full metadata, extras, tool configs
Feature What it does
Live name check Confirms your package name isn't already taken on PyPI
Smart validation PEP 508 names, PEP 440 versions, emails, Python requires
Two build backends setuptools or hatchling, both src-layout aware
8 embedded licenses MIT, Apache-2.0, BSD-3-Clause, GPL-3.0, LGPL-3.0, ISC, MPL-2.0, CC0
Batteries included ruff, mypy, pytest, coverage, pre-commit, GitHub Actions
Auto-publish publish.yml builds and uploads to PyPI when you tag a release
Git & GitHub git init + first commit, optional gh repo create + push
Review & edit final review screen lets you change any answer first
Scriptable full non-interactive mode via --answers
Cross-platform pure Python, works on Windows / Linux / macOS

🤖 Non-interactive mode (scripting / CI)

pypkg --answers answers.json

The JSON file may contain any subset of the wizard answers — missing keys fall back to sensible defaults.

{
  "package_name": "my-awesome-tool",
  "version": "0.1.0",
  "description": "Does wonderful things.",
  "author_name": "Ada Lovelace",
  "author_email": "ada@example.com",
  "license_key": "MIT",
  "python_requires": ">=3.10",
  "build_backend": "hatchling",
  "dependencies": ["requests>=2.31", "click>=8.0"],
  "include_ruff": true,
  "include_mypy": true,
  "include_pytest": true,
  "include_pre_commit": true,
  "include_ci": true,
  "include_publish": true,
  "include_docs": false,
  "include_cli_entry_point": true,
  "use_src_layout": true,
  "git_init": true,
  "create_github_repo": false,
  "editable_install": false,
  "verify_build": false
}

📖 Command reference

pypkg [OPTIONS]

Options:
  --answers FILE        JSON file with answers (skips the interactive wizard).
  --name TEXT           Package name (non-interactive convenience flag).
  --output-dir PATH     Directory to create the project in. Default: current dir.
  --skip-pypi-check     Skip the live PyPI availability check.
  --list-licenses       List all supported licenses and exit.
  --version             Show the tool version and exit.
  --help                Show this message and exit.

🎓 Need more help with packaging?

pip-package-creator handles the boilerplate, but understanding the ecosystem makes you dangerous:


🛠 Development of this tool

git clone https://github.com/1cz1/pip-package-creator.git
cd pip-package-creator
python -m venv .venv
.venv\Scripts\activate        # Windows
source .venv/bin/activate     # Linux / macOS
python -m pip install -e ".[dev]"

Run the same checks CI runs:

ruff check .
ruff format --check .
mypy src/pip_package_creator
pytest

License

MIT


Author

Built by Hikaro — cybersecurity enthusiast and developer.

Download files

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

Source Distribution

pip_package_creator-0.1.0.tar.gz (60.7 kB view details)

Uploaded Source

Built Distribution

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

pip_package_creator-0.1.0-py3-none-any.whl (64.3 kB view details)

Uploaded Python 3

File details

Details for the file pip_package_creator-0.1.0.tar.gz.

File metadata

  • Download URL: pip_package_creator-0.1.0.tar.gz
  • Upload date:
  • Size: 60.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pip_package_creator-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d6979f4bbf08f571e860db1762019ddf487b6ba2b849cab9eb8dafe4e16d59cc
MD5 0b896ace31e682a7337380b52e864771
BLAKE2b-256 ba69398a0b53e58573f7b74396325e236fbfca33dd4f27cf1f8a7cd95baf83eb

See more details on using hashes here.

File details

Details for the file pip_package_creator-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pip_package_creator-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1dfaef288e8a7a12d33a04585fb9d9f1bc8f59d7b17d8b569ffc141368583e7c
MD5 d7c98d2ec80fe7f1a6e9e99ba5ee31de
BLAKE2b-256 5692a09a3fcbbb891c488b3253c050d365bcb1b0301d1315545418d53642da5f

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page