Я создал модуль с именем myutils.Это структура файла, которую я использую:
./mypackages
./mypackages/myutils
./mypackages/myutils/util1.py
./mypackages/myutils/util2.py
./myexecs
./myexecs/user_executable1.py
Я правильно установил PYTHONPATH=./
в ./myexecs/user_executable1.py
Я могу легко использовать утилиты:
from my_packages import myutils
myutils.util1.func1()
Вutil1.py Я могу использовать util2.py:
from . import util2
util2.func2()
Проблема возникает, когда я хочу использовать util1.py непосредственно в качестве основной точки входа.У него есть точка входа
if __name__ == "__main__": main()
, но если я просто выполню ее напрямую, она не сможет импортировать util2 (from . import util1
не удастся).
Она успешно выполнитсяесли я выполню его, используя python -m mypackages.myutils.util1
Есть идеи, как заставить util1 импортировать его сибилинги, используя from . import ...
, и при этом иметь возможность выполнять его непосредственно из cmd, не выполняя его как модуль?