openlang

한 소스 체크아웃으로 여러 venv의 editable 패키지 빌드하기

제 프로젝트가 사용하는 의존성 하나를 수정하고 싶어요. 그 의존성인 kivy(https://kivy.org/)에는 선택적 의존성이 몇 가지 있고 cython으로 네이티브 모듈을 컴파일하는데, 제 프로젝트에는 특정 조합(실은 아무것도 없음)이 필요하고 kivy 자체 테스트에는 [dev,full]이 필요해요.

두 프로젝트는 필요한 설정이 달라서 venv를 공유할 수 없지만, 양쪽 프로젝트에서 변경을 쉽게 테스트하려면 각각 kivy가 editable 모드로 설치되어 있어야 해요.

덧붙이면, 여러 python 버전을 차례로 테스트하면서 각각 별도의 editable 모드 venv를 쓰는 경우에도 같은 제약이 있을 것 같아요.

이런 구성을 작동시키는 방법을 아시는 분 있나요?

영어에서 번역원문 보기

이어지는 대화 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으로 모든 서비스를 시작하면 컨테이너 몇 개가 수백 줄씩 출력을 쏟아내요. 이 출력을 간편하게 걸러 낼 수 있을까요? 아니면 더 좋게는 docker-compose up이 실행되는…

    답글 3최근 활동 bash
  2. C 대신 D로 Python 확장 모듈을 만들 수 있을까요?

    D는 C와 링크할 수 있다고 하더군요. D로 Python 확장 모듈을 작성하고 싶어요. 제가 놓친 이유 때문에 이 방법이 아예 불가능한 건 아닐까요?

    답글 2최근 활동 d
  3. Micro 플러그인을 Nix에서 선언할 수 있나요?🤔

    python에서는 이렇게 쓸 수 있어요: Python.withPackages (q: with q; [ fastapi ]) Micro 에디터에도 같은 방식이 있나요? micro 에디터 패키지와 플러그인을 함께 지정할 수 있나요…

    답글 3최근 활동 nix