источник: https://towardsdatascience.com/build-your-first-open-source-python-project-53471c9942a7
- Определиться с идеей и именем проекта (пакета)
- Установить Python3
- Venv
- Создание виртуального окружения
python3.7 -m venv my_directory_env
Активация виртуального окружения:
source my_env/bin/activate
- Выйти из виртуального окружения:
Deactivate
- Создать организацию в GitHub
-
Создайте новый репозиторий в созданном вами организации для вашего opensource проекта.
-
Клонирование репозитория
git clone урл_репозитория
- Создание и установка requirements_dev.txt
requirements_dev.txt - зависимости которые используются разработчики проекта.
Установка зависимости:
pip install -r requirements_dev.txt
- Написание кода и commit
Создайте базовый функционал проекта для демонстрации ваших целей. Вы можете создать другой функционал позже.
- Создание файла 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 - подробное описание проекта.
- Создание первой версии
Twine - сборник утилит для безопасной публикации python-пакетов на PyPI. Добавьте в файл requirements_dev.txt строку: twine==1.13.0
И переустановите заново заисимости.
Запустите следующую команду для создания вашего пакета:
python setup.py sdist bdist_wheel
- Создание TestPyPI аккаунт
PyPI - это портал который содержит индекс пакетов питона. Официальный пакетный менеджер pip забирает файлы из PyPI и устанавливает их локально.
TestPyPI - это тестовая версия PyPI. Создайте аккаунт здесь https://test.pypi.org/account/register/
Пароли PyPI и TestPyPI должны быть разными.
- Публикация в TestPyPI
twine upload --repository-url https://test.pypi.org/legacy/ dist/
-
Проверка установки и использование её
-
Создать другое виртуальное и активировать его.
- Установка пакета: pip install your-package
- Установка пакета из 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
Проверка использования вашего пакета в тестовом скрипте.
- Отправка в GitHub
При отправке на GitHub проверьте что Вы не отправляете файлы виртуального окружения, артефакты и т д. Для того чтобы исключить файлы добавьте в файл .gitignore что нужно игнорировать при отправке на гитхаб.
git push origin my_branch
- Создание и объединение PR (pull request)
Зайдя на гтитхаб через браузер, вы можете уидеть возможность создания pull request. Нажимая на “зеленую” кнопку вы можете создать и слить ваш PR и удалить ваш удаленную ветвь фичи.
- Удаление ветви:
git branch -d my_feature_branch