Fork me on GitHub

Создание opensource пакета (библиотеки) на Python

источник: https://towardsdatascience.com/build-your-first-open-source-python-project-53471c9942a7

  1. Определиться с идеей и именем проекта (пакета)
  2. Установить Python3
  3. Venv
  4. Создание виртуального окружения
python3.7 -m venv my_directory_env 

Активация виртуального окружения:

source my_env/bin/activate
  • Выйти из виртуального окружения:
Deactivate 
  1. Создать организацию в GitHub

img

  1. Создайте новый репозиторий в созданном вами организации для вашего opensource проекта.

  2. Клонирование репозитория

git clone урл_репозитория 
  1. Создание и установка requirements_dev.txt

requirements_dev.txt - зависимости которые используются разработчики проекта.

Установка зависимости:

pip install -r requirements_dev.txt
  1. Написание кода и commit

Создайте базовый функционал проекта для демонстрации ваших целей. Вы можете создать другой функционал позже.

  1. Создание файла setup.py

Setup.py - build скрипт для вашего пакета. Setup функция из Setuptools будет строить ваш пакет для загрузки в PyPI. Setuptools включает информацию о вашем пакете, версию пакета и другие пакета для пользователей пакета.

Например:

from setuptools import setup, find_packages 

with open("README.md", "r") as readme_file: 
    readme = readme_file.read() 
 requirements = ["ipython>=6", "nbformat>=4", "nbconvert>=5", "requests>=2"] 
 setup( 
    name="notebookc", 
    version="0.0.1", 
    author="Jeff Hale", 
    author_email="jeffmshale@gmail.com", 
    description="A package to convert your Jupyter Notebook", 
    long_description=readme, 
    long_description_content_type="text/markdown", 
    url="https://github.com/your_package/homepage/", 
    packages=find_packages(), 
    install_requires=requirements, 
    classifiers=[ 
        "Programming Language :: Python :: 3.7", 
        "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", 
    ], 
) 

где

README.md - подробное описание проекта.

  1. Создание первой версии

Twine - сборник утилит для безопасной публикации python-пакетов на PyPI. Добавьте в файл requirements_dev.txt строку: twine==1.13.0

И переустановите заново заисимости.

Запустите следующую команду для создания вашего пакета:

python setup.py sdist bdist_wheel  
  1. Создание TestPyPI аккаунт

PyPI - это портал который содержит индекс пакетов питона. Официальный пакетный менеджер pip забирает файлы из PyPI и устанавливает их локально.

TestPyPI - это тестовая версия PyPI. Создайте аккаунт здесь https://test.pypi.org/account/register/

Пароли PyPI и TestPyPI должны быть разными.

  1. Публикация в TestPyPI

twine upload --repository-url https://test.pypi.org/legacy/ dist/

  1. Проверка установки и использование её

  2. Создать другое виртуальное и активировать его.

  3. Установка пакета: pip install your-package
  4. Установка пакета из TestPyPI:
pip install --index-url https://test.pypi.org/simple/ my_package 

Установка пакета из TestPyPI, используя установку других пакетов из PyPI:

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

Проверка использования вашего пакета в тестовом скрипте.

  1. Отправка в GitHub

При отправке на GitHub проверьте что Вы не отправляете файлы виртуального окружения, артефакты и т д. Для того чтобы исключить файлы добавьте в файл .gitignore что нужно игнорировать при отправке на гитхаб.

git push origin my_branch 
  1. Создание и объединение PR (pull request)

Зайдя на гтитхаб через браузер, вы можете уидеть возможность создания pull request. Нажимая на “зеленую” кнопку вы можете создать и слить ваш PR и удалить ваш удаленную ветвь фичи.

  1. Удаление ветви:
git branch -d my_feature_branch

social