2017-05-17 1 views
0

두 개의 모듈을 포함하는 Python 프로젝트에서 작업하고 있습니다. 이 모듈은 매우 밀접하게 관련되어 있으며, 따라서 나는 그들이 같은 자식의 repo에있는 것으로, 내 IDE에서 함께 발전 할 수 있도록하려면 : module2 Python - setuptools - 하나의 저장소에있는 두 개의 종속 패키지 작업

  • module1 다른 무거운 많이 있습니다에

    • module1 의존 의존성, 모듈 2는
    • module1module2 그것이 예에서 실행할 수 있도록 별도로 설치해야합니다 다른 런타임 환경
    • module2에 사용됩니다하지 않습니다 AWS 람다

    결과적 I 하나 REPO 내의 두 폴더에있는 두 개의 모듈을 포함하는 프로젝트 구조, setup.py 너무 패키지화 할 각각 갖는 폴더를 설정하는 것을 시도했다. 이것은 합리적인 접근법입니까?

    \module1 
        setup.py 
        \module1 
        __init__.py 
        [scripts].py 
    \module2 
        setup.py 
        \module2 
        __init__.py 
        [scripts].py 
    

    위의 구조 나 로컬 일반 모듈로 module2 치료 프로젝트에서 작업 할 수 있도록해야하지만, setup.py 파일이 그것을 바로 자신의 꾸러미로 배포 될 수 있다는 것을 의미?

    문제는 내가 module1setup.py에서 module2 의존성을 포함 할 수 없다는 것입니다 :

    from setuptools import setup 
    
    setup(
        name="module1", 
        version="0.1", 
        packages=['module1'], # I really need to include module2 scripts here, right?... 
        install_requires=['pandas', 'numpy', ...] 
    ) 
    

    사람이이 문제를 접근하는 방법에 대한 조언이 있습니까? 내가 추측 할 수있는이 개 솔루션은 다음과 같습니다

    • 포장 및 module1에서 따라하기 전에 자신에 module2을 게시. 이것은 개발을 훨씬 더 infleixble로 만든다
    • module2 내에서 module1 내로 포함 할 수 있으므로 setup(...) 함수의 인수는 packages에 포함 할 수있다. 이것은 기본적으로 외부 의존성 것처럼 module1module2을 치료해야 선명도 ...
  • 답변

    2

    같은 저장소에 보관하는 가장 큰 이유는 당신의 IDE에서 모듈을 모두 병렬 작업을 가능하게하는 것이다 나누기. 모듈을 별도의 저장소에 보관하고 pip의 경우 editable 모드를 사용하거나 setuptools의 경우 develop 모드를 사용하여 "병렬"개발을 수행하는 것이 좋습니다.

    기본적으로 module1에서 사용하면 develop/editable 모드로 module2을 설치합니다. 또한 pip install git+<git_directory> 같은 일을 중단하지 않도록 할 것 같은 일을 module1

    을 개발하는 즉시 동안 그 후, 당신은 module2에 대한 모든 변경 사항을 볼 수 있습니다 당신은 git

    +0

    감사 @Rubbal에서 직접 설치할 수 있습니다. 그래서 두 개의 별도 repos와 setuptools 개발 모드를 사용한다면'module1'의'module2'에 대한'setup.py' 의존성을 어떻게 선언할까요? 나는'pip -e [path]'를 사용하는 것을 이해하지만,'setup.py'에서 무엇이 상응 하는가? – rjmurt

    +0

    당신은 단순히'install_requires'에 추가 할 것입니다. (필자는 요구 사항을 지키기 위해 사용했습니다.txt를 사용하여 개발하는 동안 모든 요구 사항을 직접 설치할 수 있습니다. setup.py에서는 requirements.txt를 파싱하여 install_requires에 추가 할 것입니다. – Rubbal

    +0

    아마도 이것이 올바른 대답이라고 생각합니다. ('install_requires'는 제대로 작동하지 않습니다.) 내 질문은 정말로/코드의 단일 세트에서 하나 이상의 PyPI 스타일 패키지를 구축하기위한 메커니즘이 있어야하는지 여부입니다. 빌드 단계에서 setuptools를 사용하는 것이 유연하지 않은 것 같습니다 ... – rjmurt

    관련 문제