나는 파이썬 모듈을 작성했다. 그것은 레포에 있습니다. 이제 모듈을 실행할 단위 테스트를 얻으려면 해당 모듈의 하위 폴더가 될 수 없습니다. 이 문제를 해결하기위한 권장 구조는 다음과 같습니다.다른 repo에서 파이썬 모듈 가져 오기
ModuleRepo/
MyModule/
__init__.py
some_utils.py
import .some_helpers
some_helpers.py
Tests/
some_utils_test.py
import MyModule.some_utils
some_helpers_test.py
import MyModule.some_helpers
이제 제대로 작동합니다. 테스트를 실행하면 모듈을 가져올 수 있습니다. 모듈은 미리 보류중인 '.'로 자신의 파일 (예 : some_helpers)을 가져올 수 있습니다. 로컬 폴더를 나타냅니다.
다른 레포가이 모듈을 공유하기를 원하며 모듈을 찾는 방법을 모르겠습니다.
예 :
ModuleRepo/
MyModule/
__init__.py
...
Tests/
...
AnotherRepo/
using_my_module.py
import ??? <-- how to find MyModule?
시도 # 1 작동하지 : 나는 자식의 서브 모듈의 기능을 사용 AnotherRepo에서 ModuleRepo을 포함하는 초기 시도 합니다. 그러나 실제로는 루트 폴더를 ModuleRepo에두고 싶지 않습니다. 하위 폴더 'MyModule'만 필요합니다. git의 하위 모듈은 그렇게하지 않는다는 것을 알 수 있습니다. 포함 할 repo의 일부만 선택할 수 없습니다.
불필요한 SYMLINK : 심볼릭 링크가 작동 할 수 있지만 리포지토리에 '커밋'할 수 없기 때문에 다소 바람직하지 않습니다. 또한 Windows와 Linux에서 모두 개발 중이므로 두 가지 모두에서 작동하는 솔루션이 필요합니다.
가능한 해결책 : ModuleRepo 루트를 모듈로 바꾸십시오 ( .py 추가). 그런 다음 git을 사용하여 AnotherRepo의 하위 모듈로 만들 수 있습니다. 내 가져 오기 못생긴하지만 그것은 될 것이다 : 가져 오기 my.module.some_utils 대신 가져 오기 mymodule.some_utils
누구 더 나은 솔루션을 가지고 있습니까?
가장 좋은 방법은 분리 된 프로젝트를 만들고 PyPI 패키지를 만들어 의존성로 사용하는 것입니다. – manoelhc