Say hello!
Project description
Python Package Example
This repository contains a basic python package example with the aim of showing how a good python package should look like.
Install:
pip install helloworld
Install locally:
git clone https://github.com/mkmenta/python-package-example.git
cd python-package-example
pip install -e .
If you are developing, you should run pip install -e .
every time you change setup.py
or the dependencies etc. to make sure that everything works.
Usage example:
from helloworld import say_hello
# Generate "Hello world!"
say_hello()
# Generate "Hello mkmenta!"
say_hello("mkmenta")
Developing
To install the package along with the tools you need to develop it run the following (local installation with the "dev"
extras:
git clone https://github.com/mkmenta/python-package-example.git
cd python-package-example
pip install -e ."[dev]"
A note about requirements
The requirements needed to run the package should go in the install_requires
argument of setup()
in the setup.py
.
The requirements needed to develop the package should go in the extras_require
argument dict (under the "dev"
key) of setup()
in the setup.py
.
This is preferred to a requirements.txt
file, because this is code and it can be understood directly during the installation of the package itself.
The requirements.txt
should be used to recreate enviroments with specific versions (e.g.requests==2.22.0
), not to share software.
Building and distribution
Build without installi i.e. build wheel:
python3 setup.py bdist_wheel
Source distribution:
python3 setup.py sdist
For the source distribution, remember to:
- Check out the warnings of
python3 setup.py sdist
. - Check that every file from the repo is packed in the tar file (
tar tzf dist/helloworld-X.X.X.tar.gz
) as written in theMANIFEST.in
. A useful tool ischeck-manifest
.
Uploading to PyPI
python3 setup.py bdist_wheel sdist
twine upload dist/*
Other useful stuff
- This repo is prepared for PyCharm and it has some run configurations (in
.idea/runConfigurations
).
References
- Mark Smith - Publish a (Perfect) Python Package on PyPI (video)
.gitignore
file from gitignore.io- License from choosealicense.com
- PyPI classifiers from https://pypi.org/classifiers/
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
Built Distribution
Hashes for helloworld_mkmenta-0.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 77d1bec9041d14f97111c1c682f7edc52b0299b9ea4173603b960d16af1169f3 |
|
MD5 | 0e2c2bee8fa9bdc46a896093ac59986a |
|
BLAKE2b-256 | 976501db5d6a64bcc304d9f455481097102cc6c55799615280ba886253e238f8 |