openlang

Один исходный checkout для разных editable-сборок пакета в отдельных venv

Хочу изменить одну из зависимостей моего проекта. Эта зависимость, kivy (https://kivy.org/), предлагает несколько необязательных зависимостей и компилирует нативные модули через cython, причём моему проекту нужен определённый набор (на самом деле пустой), а собственным тестам kivy требуется [dev,full].

Проектам нужны разные конфигурации, поэтому общий venv не подходит, но в обоих kivy должен быть установлен в editable-режиме, чтобы изменения можно было легко проверять в каждом проекте.

Кстати, думаю, такие же ограничения возникают при постепенном тестировании нескольких версий python с использованием отдельных venv в editable-режиме.

Кто-нибудь знает, как заставить такую схему работать?

Переведено с английскогоПоказать оригинал

Разговор продолжается 2

Следуя доводам
  1. Ссылка на ответ

    Должен подойти менеджер окружений, позволяющий задавать зависимости отдельно для каждого окружения. С tox (https://tox.wiki/) это могло бы выглядеть примерно так:

    pyproject.toml:

    dependencies = [
        "kivy",
        ...
    ]
    
    dependency-groups = [
        "widgetdev" = "kivy[dev,full]",
    ]

    tox.ini:

    [tox]
    envlist =
        py314
        py314-widget
    
    [testenv]
    dependency_groups =
        widget: widgetdev
    ...

    Подробности, нужные для завершения конфигурации, посмотрите в документации tox. pixi (https://pixi.prefix.dev/) тоже умеет описывать окружения с разными возможностями. Наверняка это поддерживают и другие инструменты.

    Переведено с английскогоПоказать оригинал
  2. Ссылка на ответ

    А, то есть подстроить настройки моего проекта под совместимую конфигурацию kivy, вместо попытки одновременно использовать две разные конфигурации. Звучит разумно, посмотрю внимательнее, что здесь умеет uv, поскольку сейчас я пользуюсь именно им, хотя у tox тоже, похоже, есть полезные возможности. Спасибо!

    Переведено с английскогоПоказать оригинал

Другие стороны того же вопроса

  1. Уменьшение шума в консоли docker-compose

    Когда docker-compose up запускает все сервисы в моей среде разработки, несколько контейнеров выдают сотни и сотни строк. Можн…

    Ответы 3Последняя активность bash
  2. Можно ли создавать модули расширения Python на языке D вместо C?

    Похоже, D умеет компоноваться с C. Я хочу написать модуль расширения Python на D. Не упускаю ли я какую-то причину, по которо…

    Ответы 2Последняя активность d
  3. Объявлять плагины Micro через Nix?🤔

    В python можно написать так: Python.withPackages (q: with q; [ fastapi ]) Есть ли аналогичный механизм для редактора Micro? М…

    Ответы 3Последняя активность nix