@sbfly: Programme aus unterschiedlichen Verzeichnissen starten zu können ist normal, da muss man nicht ”leider” zu sagen.
Der Ordner in dem der Ordner mit dem Package liegt muss im Suchpfad für Module liegen. Und dann kann man die Module aus dem Package ganz normal importieren über das Package, also Beispielsweise ``from Funktionen import spam`` um das `spam`-Modul aus dem `Funktionen`-Package zu importieren.
Mir ist klar das `Funktionen` hier nur ein Beispiel war, aber bei dem Namen des ”Wurzelpakets” sollte man einen sinnvollen und nicht zu generischen Namen wählen, denn das befindet sich ja auf ”oberster Ebene” und teilt sich diesen Namensraum mit allen anderen installierten Modulen und Paketen. Da sollte man auf Namenskollisionen achten.
Die `__init__.py` macht den Ordner zu einem Package. Irgendwie muss Python ja Ordner unterscheiden in denen einfach nur zufällig ein paar Python-Dateien liegen und Ordner die ein Package bilden sollen. Ausserdem kann man das Package selber ja auch als Modul importieren (``import Funktionen`` oder ``from Funktionen import …``) und dann braucht man ja einen Ort wo man den Quelltext hinein schreiben kann der dieses Modulobjekt definiert. Insofern könntest Du auch überlegen ob Du das Modul in drei Module aufteilen möchtest, oder vielleicht nur in zwei plus dem bisher ungenutzen Package-Modul.