2012-10-17 10 views
0

내 프로젝트에서 기본 패키지 이름을 변경하고 싶습니다.파이썬에서 기본 패키지 이름을 변경하십시오.

hallo/sub 
hallo/foo 
hallo/bar 

그리고 '안녕'으로, 예를 들어 주요 이름을 변경하려면 :

나는이 같은 디렉토리 구조를했습니다

goodbye/sub 
goodbye/foo 
goodbye/bar 

을하지만, 그 결과로 새로운 이름은 항상 거부 당했다! 예를 들어 나는 그것은 오류

ImportError: No module named sub.utils 

을 반환하고 명확하게 이전 이름이 작품을하지 않는

import goodbye.sub.utils as utils

를 가져 오는 경우. __init__.py 파일이 모든 하위 디렉토리에 작성되었습니다!

모든 * .pyc 파일과 캐시 디렉토리를 제거하려고 시도했지만 다른 디렉토리에서 프로젝트를 다시 복제하려고했지만 아무 것도하지 않으면 새 이름이 항상 거부됩니다!

저는 * nix에서 python2를 사용하고 있습니다. 그리고 나는 결코 창 아래로 움직이지 않을 것입니다.

몇 가지 아이디어가 있습니까?

편집 : 옛 이름은 완벽하게 작동합니다 :

import hallo.sub.utils as utils 

항상 오류없이 일했다, 문제는 이름 변경입니다.

+3

"goodbye"라는 이름의 * 다른 모듈이있는 것처럼 들립니다. '수입 작별 인사; print goodbye .__ file__'을 스크립트로 가져 와서 가져온 것을 찾으십시오. –

+0

이것을 재현 할 수 없습니다. 내 [세션 로그] (http://pastebin.com/ArL9WYwP)를 참조하십시오. –

+0

당신은 권리가 있습니다, 나는 포장의 이름과 약간의 혼란을했습니다. TNX. – Giggi

답변

0

외부에서 가져 오기의 경우 __init__.py의 내용을 확인하여 문제가 발생할 수있는 변수 (예 : __all__)를 확인하십시오. 그 차이를 만드는 이유

from hallo.sub import utils  #tyically this 
import hallo.sub.utils as utils #instead of this 

내가 상상할 수 있지만, 파이썬은 가끔 바보 버그가 있습니다

또한, 일반적인 관용구이다.

패키지 내에서 가져 오기의 경우 relative imports을 대신 사용할 수 있습니다. 당신의 hallo 패키지 내에서이를 변경할 수 있습니다

import hallo.sub as sub 
import hallo.sub.utils as utils 

from . import sub 
from .sub import utils 

에 그 다음은 외부 패키지를 호출 중요하지 않습니다.

+0

이것은 OP 문제가 아닙니다. 이전 이름이 패키지 내부에서 사용되는 것은 아닙니다. 새 이름을 패키지 외부에서 가져 오지 못합니다. –

+0

그게 가능한 해결책입니다. 글로벌 수입은 '안녕'이 아니라 '안녕'과 함께 작동합니다. – Giggi

+0

나는 "파이썬이 때때로 바보 같은 버그를 가지고있다"고 생각하지 않는다. 종종 그것을 사용하는 사람들은 자신이하는 일을 완전히 이해하지 못합니다 (예 : 수입품/주기적 수입품 등). 분명히 버그가 있지만 복잡한 소프트웨어에서는 불가피합니다. – Bakuriu

관련 문제