2016-06-24 1 views
0

파이썬 2.7에서 실행되지만 3.5에서는 실행되지 않는 코드가 있는데 이유를 찾을 수 없습니다. 그것은 가져 오기와 관련이 있습니다.파이썬 3으로 이슈 가져 오기

루트 폴더에는 s이라는 하위 폴더가 있습니다. 루트 폴더에서 스크립트 a.py을 실행 중이며 줄에는 from s import *이 포함되어 있습니다. 폴더 s에서

가져 오기 라인을 가지고 b.py라는 파일이 : from c import c뿐만 아니라 하위 폴더 s에 위치한 c.py에 저장된 클래스를 가져하려고 .

루트 폴더에서 a.py 스크립트를 실행하면 "No module c"이라고 표시된 ImportError이 표시됩니다.

파이썬 2.7에서는 문제없이 실행됩니다. 누군가가 문제가 될 수있는 제안을하고 파이썬 3.5에서이 문제를 어떻게 다르게해야할까요?

from .s import * 

이 파이썬 2와 파이썬 3.이 모두 작동합니다 : 패키지 내에서

+0

흥미 롭습니다. 설명 된 구성은 Python2에서 ImportError를 던지고 python3에서 나를 위해 모듈 c를 던지거나로드하지도 않습니다. –

+1

http://stackoverflow.com/questions/12172791/changes-in-import-statement-python3을 보았습니까? 관련성이 있습니다 (즉, "Python 3에서 패키지 내의 암시 적 상대 가져 오기를 더 이상 사용할 수 없습니다"). – rkersh

+0

https://docs.python.org/3/whatsnew/2.5.html#pep-328-absolute-and-relative-imports를 참조하십시오. –

답변

3

암시 수입은 그래서 이것은 당신이 명시 적으로 상대 가져 오기를 사용할 필요가 작동하도록하기 위해, 파이썬 3을 사용할 수 없습니다 또한 설치 패키지가 아닌 상대 패키지에서 가져 오려는 사용자의 의도를 명확하게 나타냅니다.

+0

정말 고마워요. :). 필자가 정확히 필요하다. ython 3의 상대적인 import는 약간 다르다. 고맙습니다 – splinter