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

Структура пакета

Когда вы создаете файл «.py», это модуль. Вы можете определять классы, функции, переменные в этом модуле, названном как имя файла. Когда вы помещаете один или несколько модулей в папку и добавляете файл __init__.py, вы создаете пакет с именем папки. Итак, общая структура папок пакета может быть такой:

Создать пакет

Теперь, когда вы поместили свой код в структуру пакета, давайте посмотрим, как создать пакет. Для этого наиболее важным является файл конфигурации установки «setup.py». Вы используете это для указания метаданных. Вот пример файла:

from setuptools import setup, find_packages

setup(name='funniest',
      version='0.1',
      description='The funniest joke in the world',
      long_description='Really, the funniest around.',
      classifiers=[
        'Development Status :: 3 - Alpha',
        'License :: OSI Approved :: MIT License',
        'Programming Language :: Python :: 2.7',
        'Topic :: Text Processing :: Linguistic',
      ],
      keywords='funniest joke comedy flying circus',
      url='http://github.com/storborg/funniest',
      author='Flying Circus',
      author_email='[email protected]',
      license='MIT',
      packages=find_packages(),
      install_requires=[
          'markdown',
      ],
      include_package_data=True,
      zip_safe=False)

Более подробную информацию о функции настройки можно найти здесь.

Укажите зависимости

Чтобы подготовить пакет к работе после установки, вы хотите сообщить процессу установки, какие другие пакеты он использует, чтобы их можно было установить автоматически. Просто поместите это в «install_requires = […]» в функции настройки. При желании вы можете указать версию:

install_requires=[‘A==1.0’, ‘B>=1,<2’]

Эти зависимости являются общедоступными пакетами, которые можно установить через pip. Если вы полагаетесь на те, которые не на pypi, используйте это:

dependency_links=[‘http://github.com/user/repo/tarball/master#egg=package-1.0']

Добавить дополнительные файлы

Часто в ваш пакет могут потребоваться файлы других типов. Для этого:

  1. Установите "include_package_data = True"
  2. Создайте файл MANIFEST.in в папке setup.py
  3. Добавьте путь к файлу в МАНИФЕСТ как «include /path/to/test.json», путь является относительным. Вы также можете использовать шаблон поиска, например «* .json».

Пакет сборки

Теперь у вас все готово, приступим к сборке пакета. Сборка пакета означает создание дистрибутива исходного кода (например, tar.gz) или двоичного файла (например, wheel). Сделать это просто.

python setup.py sdist bdist_wheel

Это создаст оба формата в папке «./dist». Файлы будут названы в зависимости от имени и версии пакета.

Распространить пакет

Поздравляю! Теперь у вас есть блестящая упаковка. Пришло время сделать его доступным для других или для себя в будущем. Мы собираемся загрузить его в Pypi, чтобы вы могли выполнить свою любимую «установку pip».

Во-первых, вам необходимо создать учетную запись на pypi site.

Затем просто запустите:

twine upload dist/*

Здесь мы предполагаем, что все файлы в «dist /» будут загружены в pypi. Конечно, вы можете указать конкретный файл. Twine - это простой инструмент, помогающий нам взаимодействовать с pypi. Когда вы загружаете в первый раз, он попытается зарегистрировать пакет на pypi.

Использовать пакет

На данный момент вы опубликовали свой собственный пакет на pypi. Чтобы использовать это, просто запустите pip install my_package, чтобы получить его на своей машине. Затем используйте «import my_package» в своем коде.

Если вы разрабатываете пакет локально и хотите использовать его для тестирования. Добавьте путь к папке пакета в $ PYTHONPATH, и все готово. Если вы не хотите трогать переменную среды, просто выполните pip install -e . в корневой папке пакета, и она будет установлена ​​так же, как опубликованная. Кроме того, вам не нужно ничего делать каждый раз, когда вы вносите изменения в свой код, он будет постоянно обновляться.

Вот два отличных источника, которые стоит прочитать, если вы хотите получить более подробную информацию о упаковке Python: