Python: udostępnianie wspólnego kodu rodzinie skryptów

Piszę rodzinę skryptów Pythona w ramach projektu; każdy skrypt znajduje się w podkatalogu projektu, w ten sposób:

projectroot
  |
  |- subproject1
  |    |
  |    |- script1.main.py
  |    `- script1.merger.py
  |
  |- subproject2
  |    |
  |    |- script2.main.py
  |    |- script2.matcher.py
  |    `- script2.merger.py
  |
  `- subproject3
       |
       |- script3.main.py
       |- script3.converter.py
       |- script3.matcher.py
       `- script3.merger.py

Teraz kilka skryptów udostępnia jakiś kod. Współdzielony kod jest najlepiej uważany za część samego projektu, a nie za coś, co kompilowałbym osobno i zrobiłbym bibliotekę z, lub upuściłby na stronie PYTHONPATH. Mógłbym umieścić ten kod w różnych miejscach, takich jak wprojectroot sam katalog lub w katalogu podrzędnymprojectroot nazywacommon (być może).

Jednak większość sposobów, o których dotychczas myślałem, polega na tym, że pakiety z moich podprojektów są puste__init__.py pliki i używanie względnych importów (lub nadmiarowe manipulowanie nimi)sys.path w każdym podprojekcie. Co gorsza, wygląda na to, że budowanie struktury pakietów wokół tej rodziny skryptów powoduje następujące ostrzeżenia odrzuconychPEP-3122:

Uwaga! Ten PEP został odrzucony. Guido wyświetla uruchomione skrypty w pakiecie jako anty-wzór.

Jeśli skrypty w pakiecie są anty-wzorzyste, jak mogę ustawić rzeczy w taki sposób, aby zachować wspólny kod w tym samym projekcie? Czy jest tu akceptowalny system oparty na modułach i pakietach? Jakie jest najczystsze podejście? (FWIW Wolałbym mieć plik taki jakshared.py lubcommon.py w katalogu głównym projektu, zamiast tworzyć katalog narzędziowy, który jest rodzeństwem „prawdziwych” podprojektów.)

questionAnswers(3)

yourAnswerToTheQuestion