Full example can be found here: https://github.com/AntheaJFW/setuptools-example
We will want to start with a fresh installation of python to test whether the module works from a fresh install. Hence, create and activate virtual environment with python3:
python3 -m venv venv
source venv/bin/activateFor this example, we’re using the following CLI example, Order Pizza, which will require pyinquirer:
pip install pyinquirerInstall Setup tools, as we will need this to make this into a pip install-able package:
pip install --upgrade setuptoolsCreating module to import:
Create a file order like so:
order_pizza/
order_pizza/
__init__.py
order_pizza.py
setup.pyWhere order_pizza.py will have the function OrderPizza to be used to run the cli app, and __init__.py will only contain the following:
from .order_pizza import OrderPizzaHence when order_pizza is imported, OrderPizza is in the module namespace.
This means, if we import order_pizza, we can now also allow calling OrderPizza() using the following:
import order_pizza
order_pizza.OrderPizza()We can test the setup by starting python in the second level ie
order_pizza/
-> order_pizza/
__init__.py
order_pizza.py
setup.pyStarting python repl:
cd order_pizza
pythonAnd trying to import and run the module with either of the following:
from order_pizza import OrderPizza
OrderPizza()import order_pizza
order_pizza.OrderPizza()In setup.py, we can specify the modules that this module will depend on, by specifying these in install_requires. In this case, as our module only has one external dependency, pyInquirer, we can specify this here:
from setuptools import setup
setup(name='OrderPizza',
version='0.1',
description='OrderPizza',
url='',
author='',
author_email='',
license='MIT',
packages=['order_pizza'],
zip_safe=False,
install_requires=[
'pyInquirer',
])Check that it works using:
python setup.py developSucess would output a message similar to the following will prompt:
Finished processing dependencies for OrderPizza==0.1Then you may install the module using
pip install .Test that it works by changing your terminal directory to elsewhere and running python, ie:
cd ~
pythonThen import your new module!:
from order_pizza import OrderPizza
OrderPizza()Congrats! Enjoy the packaged pizza!