2017-09-27 2 views
0

이 ImportError에서 머리를 쓸 수 없습니다.가져 오기 오류 : 이름을 가져올 수 없습니다. <class>

  • 세계 :
    • 세계 :
      • __init__.py
      • 유럽 :
        • __init__.py
        • file1.py
        • 그래서 나는 다음과 같은 구조를 가지고
        • file2.

file2.py 4 개 클래스가 "독일", "프랑스", "이탈리아", "스페인". file1.py의 내용은 다음과 수입이 있습니다

from World.Europe.file2 import Germany, France, Italy, Spain 

그러나,이 다음 역 추적 결과 : 만 1 4 개 클래스에 대한 가져 오기 오류에 직면하고있어 왜

Traceback (most recent call last): 
    File "<path>/file1.py", line 1, in <module> . 
    from World.Europe.file2 import Germany, France, Italy, Spain 
ImportError: cannot import name Spain 

모든 단서 ?

+1

이 .file2 수입에서 같은 디렉토리, 사용'에서 이후 *' – Fabricator

+0

결과 : 추적 코드 : ValueError : 비 패키지에서 상대적 가져 오기를 시도했습니다. 또한 처음 3 개 클래스는 가져 오기가 왜 4 번째 클래스가 아닌지에 대한 질문에는 대답하지 않습니다. – aaron02

+0

네 클래스 중 단 하나만 알면 어떻게됩니까? 수입은 어떤 순서로 수행됩니까? 오류 메시지에서 하나의 이름 만 얻는다 고해서 다른 세 개가 성공했다는 것을 의미하지는 않습니다. –

답변

-1
파일 1부터

및 파일 2 가져 오기 독일, 프랑스, ​​이탈리아에서

시도

같은 수준에 파일 2있다, 스페인

+0

그건 그냥 잘못입니다. 그것들은 file2 내부의 클래스이므로 file1과 같은 레벨에 있지 않습니다. – aaron02

+0

import 문을 쓰는 방법은 여러 가지가 있습니다. OP 코드가 작동하지 않는 이유는 무엇이라고 설명 할 수 있습니까? –

+0

'from .file2 import ...'여야합니다. 그리고 두 번째 형식 (상대 import 동작에 의존합니다. file2.py에 있기 때문에 여전히 잘못되었지만)은 새로운 Python 버전에서 더 이상 지원되지 않습니다. 두 번째 형식은 너무 많은 두통을 유발합니다. 첫 번째 양식을 사용해야합니다. 당신은 [PEP-328] (https://www.python.org/dev/peps/pep-0328/)에서 그 이론적 근거를 볼 수 있습니다. – jszakmeister

관련 문제