나는 패키지 A를 HAVA과 나무입니다python : 모듈 a.b를 a_.b로 가져 오는 방법?
a/
/__init__.py
/b.py
을 그리고 어떻게 import a.b as a_.b
수 있습니까?
나는 패키지 A를 HAVA과 나무입니다python : 모듈 a.b를 a_.b로 가져 오는 방법?
a/
/__init__.py
/b.py
을 그리고 어떻게 import a.b as a_.b
수 있습니까?
당신은 두 줄을해야 할 것이다 :
import a as a_
from a import b
print a_.b
# <module 'a.b' from '.\\a\\b.py'>
또는를 : 그것은 당신의 이름 공간에 b
를두고 두 번째는 단점을 가지고
import a as a_
import a.b
print a_.b
# <module 'a.b' from '.\\a\\b.py'>
첫 번째는 단점이있다 그 그것은 네임 스페이스에 a
을 넣습니다. 원하는 경우 del b
및 del a
을 사용하여 문제를 해결할 수 있습니다.
두 번째 줄을 import a.b as ignore
또는 from a import b as ignore
으로 작성하면 a
및 b
이 네임 스페이스에 표시되지 않도록 할 수 있습니다.
import sys
import a as a_
sys.modules['a_'] = a_
import a_.b
이 경고 :이 작업을 수행하는
한 가지 방법은 sys.modules에 사전에 이름 A_을 등록하는 것입니다 이렇게하면이 파이썬 세션에 대해 전 세계적으로 a_
를 등록, 그래서 다른 모듈이 import a_
을 시도하면 a
이됩니다.
전 세계적인 영향으로 인해이 문제를 해결하는 것은 좋지 않은 방법 일 수 있습니다. 그러나 전역 이름을 바꿀 때 유용 할 수 있습니다.
두 번째 줄 ('import a.b')이 필요합니까? –
은 모듈 설정 방법에 달려 있습니다 - 명시 적으로 b 개를 가져 오는 경우 no; 하지만 그렇지 않으면 가져 오기가 필요하므로 스텁 (stub) 이상이 될 수 있습니다. – theodox
@flornquake thx에 대한 자세한 답변 :) – atupal