Рубрики
Без рубрики

Как построить свой первый пакет Python

Автор оригинала: Jason Dsouza.

Несколько месяцев назад я решил выпустить CAER , компьютер компьютерного видения, доступный в Python. Я нашел процесс, чтобы быть мучительно болезненным. Возможно, вы можете догадаться, почему – маленькая (и запутанная) документация, отсутствие хороших учебников и так далее.

Поэтому я решил написать эту статью в надежде, что она поможет людям, которые изо всех сил пытаются сделать это. Мы собираемся построить очень простой модуль и сделать его доступным для всех во всем мире.

Содержимое этого модуля следуют очень базовой структуре. Всего входят четыре файлов Python, каждый из которых имеет один метод в нем. Мы собираемся сохранить это реально проще сейчас.

base-verysimplemodule  --> Base
└── verysimplemodule   --> Actual Module
    ├── extras
    │   ├── multiply.py
    │   ├── divide.py
    ├── add.py
    ├── subtract.py

Вы заметите, что у меня есть папка под названием VerySimplemodule который, в свою очередь, имеет два файла Python Add.py и countact.py Отказ Есть также папка, называемая Дополнительно (который содержит Multipy.py и Divide.py ). Эта папка сформирует основу нашего модуля Python.

Выявление __init__s

То, что вы всегда найдете в каждый Пакет Python – это __init__.py файл. Этот файл скажет Python для лечения каталогов в виде модулей (или подмодулей).

Очень просто он будет держать имена всех методов во всех файлах Python, которые находятся в его непосредственном каталоге.

Типичный __init__.py Файл имеет следующий формат:

from file import method 

# 'method' is a function that is present in a file called 'file.py'

При строительстве пакетов в Python вы должны добавить __init__.py Файл в каждом погрузочном каталоге в вашем пакете. Эти подкаталоги являются Подмодульки вашей пакеты.

Для нашего дела мы добавим наши файлы __init__.py в каталог «Фактический модуль» VerySimplemodule , как это:

from add import add
from subtract import subtract

И мы собираемся сделать то же самое для Дополнительно Папка, как это:

from multiply import multiply
from divide import divide

Как только это сделано, мы в значительной степени на полпути через процесс!

Как настроить Setup.py

В пределах база - очень симпетен Папка (и в том же каталоге, что и наш модуль VerySimplemodule ), нам нужно добавить Setup.py файл. Этот файл имеет важное значение, если вы собираетесь построить фактический модуль одал вопрос.

Примечание: не стесняйтесь назвать Setup.py файл, как вы хотите. Этот файл не имеет названия, специфичный как наш __init__.py Файл есть.

Возможные выборы имени являются setup_my_very_awesome_python_package.py и python_package_setup.py . , но обычно лучшая практика придерживаться Setup.py Отказ

Setup.py Файл будет содержать информацию о вашем пакете, специально Имя из пакета, его Версия, зависимости платформы и многое другое.

Для наших целей мы не собираемся потребуться расширенной мета-информации, поэтому следующий код должен соответствовать большинству пакетов, которые вы создаете:

from setuptools import setup, find_packages

VERSION = '0.0.1' 
DESCRIPTION = 'My first Python package'
LONG_DESCRIPTION = 'My first Python package with a slightly longer description'

# Setting up
setup(
       # the name must match the folder name 'verysimplemodule'
        name="verysimplemodule", 
        version=VERSION,
        author="Jason Dsouza",
        author_email="",
        description=DESCRIPTION,
        long_description=LONG_DESCRIPTION,
        packages=find_packages(),
        install_requires=[], # add any additional packages that 
        # needs to be installed along with your package. Eg: 'caer'
        
        keywords=['python', 'first package'],
        classifiers= [
            "Development Status :: 3 - Alpha",
            "Intended Audience :: Education",
            "Programming Language :: Python :: 2",
            "Programming Language :: Python :: 3",
            "Operating System :: MacOS :: MacOS X",
            "Operating System :: Microsoft :: Windows",
        ]
)

С помощью этого все, что нам нужно сделать дальше, запустите следующую команду в том же каталоге, что и база - очень симпетен :

python setup.py sdist bdist_wheel

Это построит все необходимые пакеты, которые потребуют Python. Сдист и bdist_wheel Команды создадут распределение источника и колесо, которое вы можете позже загрузить в Pypi.

Пипи – вот мы приходите!

Pypi является официальным хранилищем Python, где хранятся все пакеты Python. Вы можете думать об этом как о Github для пакетов Python.

Чтобы сделать пакет Python доступным людям по всему миру, вам нужно будет Счет с pypi Отказ

С этим сделано, мы все настроены для загрузки нашего пакета на Pypi. Помните распределение и колесо источника, которые были построены, когда мы побежали Python Setup.py ? Ну, это то, что на самом деле будет загружено в pypi.

Но прежде чем вы это сделаете, вам нужно установить шпагат Если у вас уже не установлено. Это так же просто, как Пип устанавливает шпагат Отказ

Как загрузить пакет на PYPI

Предполагая, что у вас есть шпагат Установлено, продолжайте и запустите:

twine upload dist/*

Эта команда загрузит содержимое Dist Папка, которая была автоматически сгенерирована, когда мы побежали Python Setup.py Отказ Вы получите подсказку, спрашиваете вас на имя пользователя и пароль PYPI, поэтому выйдите вперед и введите их.

Теперь, если вы следили за этим руководством T, вы можете получить ошибку вдоль строк Репозиторий уже существует.

Обычно это потому, что имеется имя столкновения между названием вашей пакеты и пакет, который уже существует. Другими словами, измените название вашего пакета – кто-то еще уже взял это имя.

Вот и все!

Гордо Пип Установите свой модуль, выключите терминал и запустите:

pip install  

# in our case, this is
pip install verysimplemodule

Посмотрите, как Python аккуратно устанавливает ваш пакет из двоичных файлов, которые были сгенерированы ранее.

Откройте интерактивную оболочку Python и попробуйте импортировать пакет:

>> import verysimplemodule as vsm

>> vsm.add(2,5)
7
>> vsm.subtract(5,4)
1

Чтобы получить доступ к методам разделения и умножения (помните, что они были в папке под названием Дополнительно ?), Run:

>> import verysimplemodule as vsm

>> vsm.extras.divide(4,2)
2
>> vsm.extras.multiple(5,3)
15

Это так просто, как это.

Поздравляю! Вы только что построили свой первый пакет Python. Очень просто, ваш пакет теперь доступен для скачивания всех по всему миру (до тех пор, пока у них есть питон, конечно).

Что дальше?

Тестировать пики

Пакет, который мы использовали в этом руководстве, стали чрезвычайно простым модулем – основными математическими операциями добавления, вычитания, умножения и разделения. Не имеет смысла загружать их прямо в pypi Особенно Так как вы пробуете это впервые.

К счастью для нас, есть Тест Pypi , Отдельный экземпляр PYPI, где вы можете проверить и экспериментировать на вашем пакете (вам нужно будет зарегистрироваться на отдельной учетной записи на платформе).

Процесс, который вы следуете загрузкой для тестирования PYPI, в значительной степени то же самое с несколькими незначительными изменениями.

# The following command will upload the package to Test PyPi
# You will be asked to provide your Test PyPi credentials

twine upload --repository testpypi dist/*

Для скачивания проектов из тестирования PYPI:

pip install --index-url "https://test.pypi.org/simple/"

Расширенная метаинформация

Мета информация, которую мы использовали в Setup.py Файл был очень простым. Вы можете добавить дополнительную информацию, такую как множество сопровождающих (если есть), автор электронной почты, информация о лицензии и целый состав других данных.

Эта статья Особенно подтверждается, если вы намерены это сделать.

Посмотри на другие репозитории

Глядя на то, как другие репозитории построили свои пакеты, могут оказаться супер полезными для вас.

При строительстве CAER Я бы постоянно посмотрел на то, как Numpy и Соннет Установите их пакеты. Я бы порекомендовал посмотреть на Каер , Numpy’s и Tensorflow’s Репозитории Если вы планируете настроить немного более продвинутые пакеты.