Python 2.7은 패키지 내에서 가져 오기위한 두드러진 모습을 볼 때 매우 특이한 것을합니다. 기본적으로, 그것은 내가 진정으로 이해할 수없는 이유 때문에 내장 된 것들의 상대적인 수입을 저장하고있다. 최소 유스 케이스가 아래에 있습니다. 기괴한 파이썬 수입 문제 - Builtins의 상대적 수입?
는 형태로 디렉토리 구조를 가정 :\BaseFolder
* __init__.py
* MainFile.py
\TestFolder
* __init__.py
* TestModule.py
두 __init__.py가 비어 있습니다. MainFile.py는 말한다 : 파이썬은 당신에게 수입 모듈의 목록을 제공과 함께 MainFile.py 실행
import os
:
import TestFolder.TestModule
import sys
for x in sorted(sys.modules.keys()):
print x
TestModule.py 말한다. 당신이 모듈에 대한 키를 통해 볼 때,이 쓰레기의 무리입니다,하지만 당신은 다음 키를 찾을 수 있습니다
TestFolder
TestFolder.TestModule
TestFolder.os
...
os
당신이 그 모듈에 대한 값을 보면, TestFolder.os은 None입니다. 그러나 그것은 왜 처음부터 존재합니까? 왜 모듈리스트가 그것을 찾았을 때 존재하지 않는 것으로 입증 된 모듈을 등록합니까? 나는 시스템이 TestFolder에서 먼저 "os"라이브러리 (즉, TestFolder.os)를 확인한 다음 내장 함수를 조사하기 때문에이 문제가 발생한다고 가정합니다. 왜 당신이 체크했기 때문에 항목을 추가 하는가? 파이썬이 왜 이렇게 할 것인가에 대해 누구나 통찰력을 가지고 있습니까? 어쩌면 그냥 그 위치에있는 도서관을 다시는 확인하지 않겠습니까?
상대 모듈 인 'TestFolder.os'가 존재하지 않는다는 것을 보여주는 센티넬입니다. 이렇게하면 이후에 수입을 더 빠르게 할 수 있습니다. 이것은 속임수 문제입니다. 곧 원본을 찾을 것입니다. –
나는 그것이 진술되었으므로 더미 모듈 문제의 중복 증상과 같은 것으로 동의합니다. 투표하기로 결정했다. – Namey