LINUX.ORG.RU

Приватный пакет Python

 


0

2

Хочу часть кода своей приватной программы на python выделить в такой же приватный пакет. В принципе проблем нет, в requirements.txt можно указать ссылку на репозиторий. Но вот что зависимостями пакета?

Я просто в python новичок. Надо оформлять файлы setuptools? Но зачем и что дальше? whl класть в репозиторий? Или setuptools тут не нужен и достаточно просто с пакетом держать свой requirements.txt?

Интернет не проясняет, почти все руководства нацелены на публикацию пакетов.

★★★★★
Ответ на: комментарий от atrus

Вам setuptools вообще в принципе зачем? Вероятно, вы хотите, чтобы ваша программа/библиотека была доступна любому авторизованному пользователю и устанавливалась с помощью pip. Если у вас нет надобности помещать пакет в репозиторий, то никакой setuptools вам нафиг не нужон.

FishHook
()

ChatGPT:

1. Создайте структуру проекта

Пример структуры проекта:

your_library/
├── your_library/
│   ├── __init__.py
│   └── some_module.py
├── tests/
│   └── test_some_module.py
├── pyproject.toml
└── README.md

2. Настройка pyproject.toml

В файле pyproject.toml укажите все необходимые зависимости и настройки проекта:

[build-system]
requires = ["setuptools>=42", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = "your_library"
version = "0.1.0"
description = "A brief description of your library"
readme = "README.md"
requires-python = ">=3.6"
dependencies = [
    "requests>=2.25.1",
    "numpy>=1.19.2"
]

[project.optional-dependencies]
dev = [
    "pytest>=6.2.1",
    "black",
    "flake8"
]

[project.urls]
homepage = "https://your_project_homepage"
repository = "https://github.com/your_username/your_repository"

[tool.setuptools.packages.find]
where = ["."]

3. Установка из приватного репозитория

Для установки пакета из приватного репозитория используйте URL с аутентификацией. Пример команды для установки:

pip install git+https://<username>:<token>@github.com/<username>/<repo_name>.git
ei-grad ★★★★★
()
Последнее исправление: ei-grad (всего исправлений: 1)
Ответ на: комментарий от ei-grad

В pyproject.toml вы можете указать различные системы сборки (build-system), которые будут использоваться для сборки вашего проекта. Некоторые из наиболее популярных вариантов включают:

  1. Setuptools: классическая система сборки для Python проектов.
  2. Poetry: современная система управления зависимостями и сборки.
  3. Flit: легковесная система для создания и публикации пакетов.
  4. Hatch: новая система управления проектами и сборки.

Примеры конфигурации для различных систем сборки

1. Setuptools

[build-system]
requires = ["setuptools>=42", "wheel"]
build-backend = "setuptools.build_meta"

2. Poetry

Poetry управляет зависимостями и сборкой в одном инструменте, вам нужно только указать, что используется poetry как build-backend.

[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"

Пример полного pyproject.toml с Poetry:

[tool.poetry]
name = "your_library"
version = "0.1.0"
description = "A brief description of your library"
authors = ["Your Name <your.email@example.com>"]

[tool.poetry.dependencies]
python = "^3.6"
requests = "^2.25.1"
numpy = "^1.19.2"

[tool.poetry.dev-dependencies]
pytest = "^6.2.1"
black = "^20.8b1"
flake8 = "^3.8.4"

[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"

3. Flit

Flit предназначен для простых проектов и не требует множества настроек.

[build-system]
requires = ["flit_core>=3.2,<4"]
build-backend = "flit_core.buildapi"

Пример полного pyproject.toml с Flit:

[project]
name = "your_library"
version = "0.1.0"
description = "A brief description of your library"
authors = [
    {name = "Your Name", email = "your.email@example.com"}
]
dependencies = [
    "requests>=2.25.1",
    "numpy>=1.19.2"
]

[build-system]
requires = ["flit_core>=3.2,<4"]
build-backend = "flit_core.buildapi"

4. Hatch

Hatch — это мощная система управления проектами и сборкой, которая предоставляет множество возможностей.

[build-system]
requires = ["hatchling>=1.0.0"]
build-backend = "hatchling.build"

Пример полного pyproject.toml с Hatch:

[project]
name = "your_library"
version = "0.1.0"
description = "A brief description of your library"
authors = [
    {name = "Your Name", email = "your.email@example.com"}
]
dependencies = [
    "requests>=2.25.1",
    "numpy>=1.19.2"
]

[build-system]
requires = ["hatchling>=1.0.0"]
build-backend = "hatchling.build"

Выбор системы сборки

  • Setuptools: Подходит для большинства проектов, особенно если вам нужно использовать существующие плагины и расширения.
  • Poetry: Идеально подходит для проектов, где требуется управление зависимостями, версиями и публикацией в одном инструменте.
  • Flit: Подходит для простых проектов, где требуется быстрая и легковесная настройка.
  • Hatch: Предоставляет дополнительные возможности для управления проектами и может быть полезен для более сложных проектов.

Выбор системы сборки зависит от ваших конкретных потребностей и предпочтений.

ei-grad ★★★★★
()

Я пробрасываю read only ssh ключ к репозиторию, во время этапа сборки Docker образа uv по нему пакет вытягивает (poetry и pdm аналогично работают). Ключ передается через переменные CI/CD или файликом, как удобнее.

ac130kz ★★
()
Последнее исправление: ac130kz (всего исправлений: 1)
Ответ на: комментарий от atrus

Прочитай-ка https://packaging.python.org/en/latest сначала. requirements.txt — это что-то из прошлого десятилетия, сейчас у ванильных ребят pyproject.toml, у смузихлебов, пытающихся изобрести недоNix — poetry, а то может и еще что есть.

t184256 ★★★★★
()
Ответ на: комментарий от t184256

requirements.txt отлично работает в виде лок файла, а uv (прекрасно поддерживающий project.toml без загонов как poetry) раз в 8 быстрее обычного pip. Я было пытался на Nix делать, но слишком много зависимостей нужно самому ручками поддерживать.

ac130kz ★★
()