2013-03-07 2 views
2

enter code here 패키지 이름이 샐러리이고 파일 이름이 샐러리입니다.파이썬 패키지에 대한 혼동 가져 오기

내가 셀러리 가져 오기 셀러리 패키지 대신 셀러리 파일을 가져 오려고 할 때 가져 오기 셀렉션을 말할 때. 셀러리를 가져올 수 없다고 말합니다.

from __future__ import absolute_import 
from celery import Celery 


celery = Celery('celery_app', 
       broker='redis://localhost:6379/0', 
       backend='amqp://', 
       include=['celery_app.tasks']) 

# Optional configuration, see the application user guide. 
celery.conf.update(
    CELERY_TASK_RESULT_EXPIRES=3600, 
) 

if __name__ == '__main__': 
    celery.start() 

아래와 같이 표시됩니다. 파일 대신 패키지를 가져 오는 방법을 설명 할 방법이 있습니까?

편집 :

from __future__ import absolute_import 
import sys 
del sys.path[0] 
from celery import Celery 

하지만 여전히 같은

을 시도했다. 내가 파이썬 셸에서 그 명령을 시도하면; 어떤 오류도주지 않습니다. 제가 누락 된 것이 있습니까?

+4

왜 같은 이름을 가진 모듈과 패키지를해야합니까? 그 중 하나를 변경해야합니다. – BrenBarn

+0

@BrenBarn : 가능해야합니다. stdlib은 계속 커지기 때문에 앞으로의 모든 추가 기능을 기대할 수 없습니다. –

+0

@larsmans : 어떤면에서는 사실이지만, 그 주위에는 방법이 없습니다. 패키지 이름을 무엇이든 상관없이 다른 사람 (stdlib 포함)이 그 이름을 가진 다른 모듈을 만들 수 있습니다. 최후의 수단에서는 필요한 순서대로 경로를 검색하기 위해 항상'sys.path'를 조작 할 수 있습니다. – BrenBarn

답변

1

파이썬 셸에서 이러한 명령을 시도해보십시오. 어떤 오류도주지 않습니다. 제가 누락 된 것이 있습니까? 정말

는, 이름 바꾸기 모두 같은 파일 말한다 권장하지 않습니다,하지만 당신은 아마도

또한
import sys, os 
[sys.path.remove(i) for i in sys.path if i == os.getcwd() or i == ''] 
from celery import Celery 

, 당신은 absolute_import을 가져 오는 시도 할 수 있지만하지 않는 것 그것을 사용하는 것 (docs). 당신의 지역 파일에서 가져올 때 celery.py

from .celery import my_func 
+0

나는 똑같은 것을 시도했다. 나는 인쇄물을 말했고 현재 디렉토리를 보여준다. 그러나 여전히 수입 할 수 없다. – tunaktunak

+0

흠, 위의'[sys.path ...]'** ** 수입 셀러리 '라인? – danodonovan

+0

예. 위 .its. – tunaktunak