Ниже приведен минимальный рабочий пример
my_packs/
├── foo
│ ├── code.py
│ └── __init__.py
└── setup.py
здесь code.py содержит некоторую полезную функцию, а setup.py содержит
from setuptools import find_packages, setup
setup(name="foo",
version="0.1",
description="A foo utility",
author="Ewen Cheslack-Postava",
author_email='me@ewencp.org',
platforms=["any"], # or more specific, e.g. "win32", "cygwin", "osx"
license="BSD",
url="http://github.com/ewencp/foo",
packages=find_packages(),
)
, а init - это пустой файл
пакет может быть установлен с
python setup.py develop
или
pip install -e .
, а затем из любого каталога он работает следующим образом:
python -c 'import foo.code; print(foo.code.useful_function())'
Пример адаптирован от: https://ewencp.org/blog/a-brief-introduction-to-packaging-python/index.html