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 withpython -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:
- Package name — checked live against PyPI so you don't pick a taken name.
- Author info — automatically filled from your
git config(press Enter). - License, Python version, build backend — sensible defaults everywhere.
- Tooling — tick ruff, mypy, pytest, pre-commit with the spacebar.
- Finish options —
git 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
Enterto 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:
- Python Packaging User Guide — the
official tutorial, from
pyproject.tomlto publishing. - PyPI Documentation — accounts, project publishing, and best practices.
- PyPI Trusted Publishing —
the secure, token-free way to let CI publish for you (used by
publish.yml). - PEP 621 — the standard for
pyproject.tomlmetadata that every modern tool reads.
🛠 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
Author
Built by Hikaro — cybersecurity enthusiast and developer.
- 🐙 GitHub: @1cz1
- 📸 Instagram: @Hikaro.yy
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 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d6979f4bbf08f571e860db1762019ddf487b6ba2b849cab9eb8dafe4e16d59cc
|
|
| MD5 |
0b896ace31e682a7337380b52e864771
|
|
| BLAKE2b-256 |
ba69398a0b53e58573f7b74396325e236fbfca33dd4f27cf1f8a7cd95baf83eb
|
File details
Details for the file pip_package_creator-0.1.0-py3-none-any.whl.
File metadata
- Download URL: pip_package_creator-0.1.0-py3-none-any.whl
- Upload date:
- Size: 64.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1dfaef288e8a7a12d33a04585fb9d9f1bc8f59d7b17d8b569ffc141368583e7c
|
|
| MD5 |
d7c98d2ec80fe7f1a6e9e99ba5ee31de
|
|
| BLAKE2b-256 |
5692a09a3fcbbb891c488b3253c050d365bcb1b0301d1315545418d53642da5f
|