2013-09-11 1 views

답변

5

당신은 두 줄을해야 할 것이다 :

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 bdel a을 사용하여 문제를 해결할 수 있습니다.

두 번째 줄을 import a.b as ignore 또는 from a import b as ignore으로 작성하면 ab이 네임 스페이스에 표시되지 않도록 할 수 있습니다.

import sys 
import a as a_ 
sys.modules['a_'] = a_ 
import a_.b 


경고 :이 작업을 수행하는

+2

두 번째 줄 ('import a.b')이 필요합니까? –

+1

은 모듈 설정 방법에 달려 있습니다 - 명시 적으로 b 개를 가져 오는 경우 no; 하지만 그렇지 않으면 가져 오기가 필요하므로 스텁 (stub) 이상이 될 수 있습니다. – theodox

+0

@flornquake thx에 대한 자세한 답변 :) – atupal

0

한 가지 방법은 sys.modules에 사전에 이름 A_을 등록하는 것입니다 이렇게하면이 파이썬 세션에 대해 전 세계적으로 a_를 등록, 그래서 다른 모듈이 import a_을 시도하면 a이됩니다.

전 세계적인 영향으로 인해이 문제를 해결하는 것은 좋지 않은 방법 일 수 있습니다. 그러나 전역 이름을 바꿀 때 유용 할 수 있습니다.

관련 문제