Cześć,
w komentarzu już to padło. Własną biblioteką (a właściwie modułem) będzie po prostu plik rozszerzeniem *.py, lub folder (w tym wypadku będzie to pakiet) z plikami *py i jednym pustym (lub nie pustym) plikiem __init__.py.
Sytuacja trochę inaczej wygląda jak Twój moduł/pakiet zawiera inne niestandardowe moduły/pakiety. Wtedy przydatny jest pakiet setuptools. Z tym narzędziem możesz sobie odpowiednio przygotować to, co powinien zawierać Twój pakiet i jakie zależności powinny zostać dodane. Daje to możliwość przygotowania plików do dystrybucji i łatwiejszej instalacji Twojego pakietu przez osoby, które będą go używać.
Tutaj masz ten temat opisany z przykładem jak powinien wyglądać plik setup.py - niezbędny do budowania pakietu do dystrybucji oraz kilkoma innymi plikami.
Jak zbudujesz swój pakiet do formy dystrybucyjnej, to możesz udostępnić plik dist/<nazwa_pakietu>.whl i osoba, która będzie go instalować użyje pip. Wszystkie brakujące zależność, itp. znajdujące się w setup.py zostaną doinstalowane.
$ pip install <nazwa_pakietu>.whl
Pozdrawiam,
Nelson