초기 디렉토리 구조 : 내가 다른 프로젝트에서 lib.package을 다시 할 필요가로컬 패키지와 동일한 네임 스페이스에 외부 패키지를 추가하는 방법은 무엇입니까?
project/
▾ lib/
▸ dir/
▸ package
(디렉토리에 __init__.py
파일을 가정)을 따라서 나는 그것을 위해 파이썬 패키지를 생성하고 디렉토리를 제거했습니다. 하지만 lib.package로 설치하면 lib
디렉토리에 네임 스페이스 충돌이 발생하여 프로젝트의 루트에서 가져올 수 없습니다.
최종 구조 :
▾ project/
▾ lib/
▸ dir/
그리고 VIRTUALENV에 설치된 패키지 이름 lib.package.
▾ lib/
▸ package/
__init__.py
나는
pkgutil.extendpath로하는 듯했지만
lib.package
파이썬 패키지의
__init__.py
에 추가하는 것은 도움이되지 않았다. 동일한 네임 스페이스에 local 및 virtualenv 설치된 패키지를 모두 추가 할 수있는 방법이 있습니까
lib
?
나는 이해하지 못 하겠지만'lib'를 네임 스페이스 패키지로 만들려는 것처럼 들리며'lib.package'를 거의 네임 스페이스 패키지로 만듭니다. 'pkgutil'을 사용하려면 먼저'lib' 패키지를'extendpath'하고,'lib.package' 서브 패키지를'extendpath'해야합니다. 후자를하면, 두 개의'lib.package' 서브 패키지 중 하나만 얻게되며'extendpath'는 실행되지 않거나 확장 할 것이 없습니다. 그게 당신 문제입니까, 아니면 제가 잘못 해석 한가요? – abarnert
@abarnert : 서로 다른 PYTHONPATH 디렉토리에 있어도 동일한 네임 스페이스'lib'에'dir'과'package'를 둘 다 갖기 위해 노력하고 있습니다. 당신이 언급 한'__init __. py' 둘 모두에'extendpath'를 추가하는 것은 효과가 없습니다. –
실제 코드를 설명하는 대신 표시 할 수 있습니까? 나는 둘 다''__init __. py's "를 의미하는지 모르겠습니다. 또한 코드를 제대로 볼 수 없다면 아무도 말할 수없는 코드를 올바르게 사용하지 않았을 수도 있습니다. 또한,'sys.path'가 어떻게 생겼는지,'lib.__ path__'가'import lib' 다음에 어떻게 생겼는지 보여주세요. – abarnert