2013-08-13 3 views
2

, 나는 두 번째 줄별칭이 지정된 모듈에서 이름 가져 오기. 가능한가? 내가 파이썬에서 다음과 같은 구성을 할 때

import my_package.my_very_long_module_name as foo 
from foo import f1, f2, f3 
from foo import a, b, c 
from foo import x, y, z 

my_very_long_module_name"No module named foo"을받을 폴더 my_package (폴더 파일 __init__.py있다) 내에 모듈 (my_very_long_module_name.py)입니다.

위의 두 번째 줄이 실패하는 이유는 무엇입니까? 별칭이 지정된 모듈에서 이름을 가져올 수 없습니까?

그 구성이 파이썬에서 합법적이지 않은 경우, 다른 방법이 있습니까? 파이썬은 모듈 이름 foo.py을 찾으려고하기 때문에 (

+3

어! 'import' 문에 변수 이름을 사용할 수 없습니다. 여기에'foo.py (c)'라는 이름의 모듈이있다. –

+0

Thanks @AshwiniChaudhary. 나는'from X import Y' 문장에서 모듈 별명을 사용할 수 없다고 생각합니까? 해결 방법이 없습니까? – Josh

+0

try :'from my_package.my_very_long_module_name import function_1, function_2, function_3'. –

답변

4
import my_package.my_very_long_module_name as foo 
from foo import f1, f2, f3 

두 번째 줄은 방금 수입 foo이 변수를 사용하지 않습니다 실패

이 같은 시도 할 수 있습니다.

import my_package.my_very_long_module_name as foo 
f1, f2, f3 = foo.f1, foo.f2, foo.f3 
del foo 
1

import 문에서 변수를 사용할 수 없지만 모듈의 변수에 액세스하면됩니다.

T

a = foo.a 

을 그리고 당신이 주장하는 경우도 globals에 쓸 수 : HUS, 당신은 할 수 있습니다. 솔직히, 코드에 foo.a 자격을 사용하는 것이 좋습니다. 더 쉽게 읽을 수 있습니다.

1

달성하려는 것은 sys.modules 사전을 수정하는 것입니다.

import sys 
import my_package.my_very_long_module_name as foo 

sys.modules['foo'] = foo 
from foo import f1, f2, f3 
from foo import a, b, c 
from foo import x, y, z 


경고는 : 수행이이 아마 나쁜 그래서 import foo하려고 다른 모듈이 특정 경우에 대한 my_package.my_very_long_module_name

로 끝날 것입니다,이 파이썬 세션에 대해 전 세계적으로 foo 등록 글로벌 영향으로 인해이 문제를 해결할 수 있습니다. 그러나 전역 이름을 바꿀 때 유용 할 수 있습니다.