Итак, у меня есть эта вещь python, которая должна обрабатывать файл.Что такое * простой * способ структурирования проекта python?
Сначала это было:
my_project/
├── script.py
И я бы просто запустить его с python script.py file.csv
.
Потом он вырос и стал:
my_project/
├── script.py
├── util/
│ └── string_util.py
├── services/
│ └── my_service.py
(Существует в каждом каталоге пустой __init__.py
)
Но теперьmy_service.py
хотел бы использовать string_util.py
и это так черт не просто, как это сделать.
Я хотел бы сделать from ..util import string_util
в my_service.py
(который импортируется в script.py
с from services import my_service
), но это не работает с python script.py
так my_service
«s __name__
тогда только services.my_service
(и я получаю Attempted relative import beyond toplevel package
)
я могу сделать
cd ..
иpython -m my_project.script
, но это кажется таким неестественным, и было бы очень сложно помещать его в README для получения инструкций по его запуску.Прямо сейчас я решаю его с уродливым
sys.path.append()
взломом.
Какие еще варианты у меня есть?
Я могу поделиться своим мнением об этом, но он будет опубликован как ответ. Я знаю, что ты думаешь. – idjaw