Я нахожусь в разгаре пакета python и смущен по всем аспектам упаковки.Нужна правильная структура каталогов для пакетов python и рекомендации по хорошему дизайну API
Для начала, моя структура каталогов выглядит следующим образом:
SamplePackage/
- setup.py
- README.rst
- LICENSE.rst
- sampledir/
-__init__.py
-sample.py
-utils.py
В настоящее время __init__
и setup
не заселены. sample.py
- файл, который любой пользователь пакета захочет импортировать. Он содержит api в виде различных функций: foo1
, foo2
.
utils.py
содержит вспомогательные вымыслы для smaple.py
. Последнее содержит заявление import utils
Любые скрипты, размещенные в каталоге sampledir
может легко import sample
и использовать вымыслы в sample.foo1()
. Выйдя из этого каталога, я могу позвонить import sampledir
, но не import sample
, который ожидается. Поэтому мне нужно сделать from sampledir import sample
. Это приводит к ошибке на import utils
линии в sample.py
ImportError: No module named 'utils'
В некоторых местах я видел import .utils
файлов в одном каталоге. Но когда я пытаюсь это сделать, это приводит к синтаксической ошибке.
Почему я не могу импортировать sample.py
со стороны sampledir?
Кроме того, что структура каталогов позволит пользователям, которые установили пакет просто быть в состоянии назвать import sample
с последующим sample.foo1()
и не должны делать from sampledir import sample
или import sampeldir.sample
. Например, при использовании библиотеки HTTP requests
просто нужно ее импортировать и вызвать requests.get(url)
. requests.requests.get('url')
не требуется, как в urllib
. Какое правильное назначение и расположение каталогов для достижения этого, если я хочу, чтобы пакет был назван sample
?
Если вы хотите, чтобы это было как 'запросы', [идите и смотрите' запросы'] (https://github.com/kennethreitz/requests)! – jonrsharpe