2011-08-24 2 views
2

필자가 원하는대로 Python setup.py 파일을 구성하는 데 어려움을 겪고있다. 나는 하나의 pacakge 다음과 같이 설정 한 :Python : 여러개의 setup.py 파일을 가진 패키지

somestuff_root/ 
    setup.py 
    myutils/ 
     __init__.py 
     a/ 
      __init__.py 
      somestuff.py 

나는이 같은 다른 패키지 설정이 있습니다

otherstuff_root/ 
    setup.py 
    myutils/ 
     __init__.py 
     b/ 
      __init__.py 
      otherstuff.py 

그래서 일이 내 사이트 - 패키지로 구성되어 있습니다을/디렉토리와 같은 :

myutils/ 
    a/ 
     somestuff.py 
    b/ 
     otherstuff.py 

정확히 내가 핏으로 둘 다 설치 한 후 원하는 것입니다.

내 문제는 두 번째 패키지 (pip로)를 제거해도 첫 번째 패키지를 지울 수 있다는 것입니다. 이것은 내가 원하는 것을 원하지 않습니다. 그냥 myutils.b을 제거하고 myutils.a을 유지하는 것이 좋습니다.

많은 .py 파일을 myutils/folders와 혼동하는 것으로 혼란 스럽지만, 이들이 제대로 작동하도록하는 방법을 잘 모르겠습니다. 내가 올바르게 이해 해요 경우

http://www.sourceweaver.com/musings/posts/python-namespace-packages

답변

2

, 당신이 설정하려고하는 네임 스페이스 패키지 (포함 빈 패키지는 다음과 같습니다 -

또한이 도움이 페이지를 발견 다른 별도로 설치된 패키지)이며 feature of setuptools입니다.

namespace_packages 인수의 패키지 이름 목록 인 setuptools.setup()을 호출하십시오.

setup(..., namespace_packages=['myutils'], ...) 

그런 다음, 다음 만 포함 myutils/__init__.py을 만듭니다

__import__('pkg_resources').declare_namespace(__name__) 

마지막으로, 낮은 레벨 패키지가 먼저 설치되어있는 경우 네임 스페이스가 생성되는 것을 보장 myutils/a/__init__.pymyutils/b/__init__.py 전화 pkg_resources.declare_namespace('myutils'),있다.

나는 이것이 어떻게 작동하는지 꽤 확신한다. 난 아직도 setuptools을 배우고있어, 그래서 내가 틀렸다면, 정정을 많이 주셔서 감사합니다.

관련 문제