Кредит на обложке
Установите свою духовку на 350F, или 175C в этом посте мы будем выпекать пакет Python. Это третий выпуск в серии. В предыдущем посте мы настроили базовый пакет, создав структуру вручную. В этом посте мы будем использовать очень крутой пакет CookieCutter Анкет CookieCutter может клонировать каталог другого репо или даже местного каталога. У вас будет готовый пакет Python в кратчайшие сроки. Существует также большая база данных шаблонов, а не только для Python.
Установка CookieCutter
Вы можете установить CookieCutter с командой PIP (примечание: я использую PIP3, потому что у меня также установлен PY2):
pip3 install cookiecutter
Создать пакет
На моем каталоге GIT я могу запустить:
cookiecutter https://github.com/audreyr/cookiecutter-pypackage
Поскольку GitHub является дефектом для репозиториев, вы также можете запустить:
cookiecutter gh:audreyr/cookiecutter-pypackage
Примечание: обязательно скажем 2 для CLI
Все установлено и сделано:
Менее чем за минуту был создан целый проект со всеми необходимыми файлами для пакета Python.
Добавление функции для проверки пакета
Я использую vScode, поэтому внутри основного каталога пакетов.
code .
Мы повторно используем Наш say_hello
функция, чтобы убедиться, что проект работает как ожидалось:
# -*- coding: utf-8 -*- """Main module.""" def say_hello(name): print("hello %s" % (name))
Установка пакета
Установка с аргументом dev так же, как и раньше:
python3 setup.py develop
Тестирование функции say_hello
На этом этапе мы можем проверить нашу функцию. Запустите Python3 в терминале или запускуйте.
>>> from another_package import * >>> say_hello("fer")
Не бежит, да? Мы забыли сделать одну вещь, и это добавить наш модуль Python в файл init. Причина, по которой он не удается, заключается в том, что он не знает, какие функции включать в пакет.
>>> from another_package import * >>> say_hello("fer") Traceback (most recent call last): File "", line 1, in NameError: name 'say_hello' is not defined
Добавление модуля PY в init
Открыть _ init _.py Внутри папки пакета, а под версией вставьте следующее (Обратите внимание на точку перед именем модуля)
:
from .another_package import *
Здесь мы говорим init, чтобы импортировать все наши функции.
Тест 2
Выйдите из Python и перезагрузите еще одну_package.
>>> from another_package import * >>> say_hello("fer") hello fer
С этим процессом вы больше не забудете добавить файл Readme или лицензию.
Слово о CookieCutter
Если у вас есть проект, который нуждается в определенной структуре, вы можете сделать другой шаблон. Я обычно просто занимаюсь утилитами Python и использую шаблон Python. Если вам нужен конкретный шаблон, которого еще не существует, обязательно прочитайте документы о том, как создать шаблон.
Следующая статья
У нас есть рабочий пакет, но в данный момент у него нет никакой функциональности. В следующем посте мы добавим некоторые функции, чтобы запустить как сценарий из Bash или CMD -подсказки. Мы также узнаем, как использовать аргументы с модулем Argparse. Более удовольствие приехать, следите за обновлениями!
Например:
say_hello -n "fer" -l "balandran" output: hello fer balandran
Оригинал: “https://dev.to/thefern/another-package-with-cookiecutter-578d”