2015-01-02 2 views
9

내가 가지고있는 다음과 같은 기능을 포함 imtools.py라는 모듈 :파이썬 이름 '운영 체제'가 명시 적으로 가져올 경우에도 정의되지 않은

import os 

def get_imlist(path): 
    return[os.path.join(path,f) for f in os.listdir(path) if f.endswith('.jpg')] 

내가 import imtools를 사용하여 콘솔의 기능 get_imlist를 호출을 시도하고 imtools.get_imlist(path), 나는 다음과 같은 오류가 나타날 수

Traceback (most recent call last): 
    File "<input>", line 1, in <module> 
    File "C:\...\PycharmProjects\first\imtools.py", line 5, in get_imlist 
NameError: name 'os' is not defined 

내가 파이썬에서 새로운 그리고 난 여기에 간단한 뭔가 빠진해야하지만,이 알아낼 수 없습니다. 콘솔에서 함수를 정의하면 잘 작동합니다. 이 모듈 스크립트의 구체적인 내역은 다음과 같습니다. 처음에는 import os 문없이 작성한 후 import os 문이 위에 추가 된 오류를보고 스크립트에 추가되었으며 다시 저장되었습니다. 동일한 콘솔 세션이 저장 전후에 스크립트를 실행하는 데 사용되었습니다.

+4

정확한 코드를 가져 오시겠습니까? 예를 들어, 'import os'가없는 이전 버전이 아닙니까? 소스 x 호와 예외 메시지 사이의 행 x 호가 일치하지 않습니다. – NPE

+5

그래, @ NPE가 말한거야. 'imtools.py' 파일을 편집하면 콘솔에서'reload (imtools) '할 필요가 있습니다. –

+2

여기에 표시된 코드에는 문제가 없습니다. – jgritty

답변

16

작은 힌트를 바탕으로 코드에 원래 import os 줄이 없었지만 소스에서이 문제를 해결하고 파일을 다시 가져온 것으로 추측합니다.

문제는 파이썬이 모듈을 캐시한다는 것입니다. 두 번 이상 import 인 경우 동일한 모듈을 다시 가져올 때마다 다시 읽지 않습니다. 당신이 첫 번째 수입을했을 때 가지고 있던 실수는 계속 될 것입니다.

편집 후 imtools.py 파일을 다시 가져 오려면 reload(imtools)을 사용해야합니다.

+1

네, 그게 문제였습니다. 필자는 편집기에 스크립트를 저장할 때마다 콘솔에로드 된 모든 변수를 처리한다는 인상을 받았다. 필자는 PyCharm과 같은 편집자와의 친숙 함이이 유형의 사고를 이끌어 낼 수 있다고 생각한다. 감사. – Qubit1028

+0

보통 reload (3.x의 inspect 모듈로 강등 됨)가 원하는 것을 신뢰할 수 없게 만들지 만 (더 이상 내장되어 있지 않은 이유이기 때문에) 대개 스크립트를 다시 실행하는 것이 좋습니다. –

+0

@TerryJanReedy 'reload'가 100 % 신뢰할 만하지 않은 엣지 케이스가 있다는 것을 알고 있었지만, 아직 실행되지 않았기 때문에 너무 멀리 조사하지 않았습니다. 어떻게 "스크립트를 다시 실행"합니까? –

0

같은 문제가 있습니다. 저는 또한 Jan Erik Solem이 컴퓨터 비전을 프로그래밍하는 데 관한 책을 읽으려고합니다. "[http://programmingcomputervision.com/]. 나는 인터넷에서 문제를보기 위해 탐험을 시도했지만 어떤 가치있는 해결책도 찾지 못했지만

먼저 'imtools.py'를 C : \ Python과 같이 설치된 Python이 설치된 상위 폴더에 넣기 만하면 파일이 해당 대상에 놓여지고 다음 명령 :

from PIL import Image 
from numpy import * 
from imtools import * 

imtools.get_imlist()를 사용하여 코드를 입력하는 대신 ST는 같은 코드에서 imtools를 제거 :

get_imlist() 

이이 문제를 해결할 수 있습니다 내가 사용하는 동일한 기술에 의해 내 솔루션을 발견했다한다.

관련 문제