쉘에서 웹 서버를 실행하는 중에 올바른 sys.path
을 설정하는 것이 문제 일 수 있습니다.
sys.path
에 대한 자세한 내용은 sys module입니다.
~/httpdocs/python-libraries/feedparser-4.1/
(가장 좋은 방법은 전체 경로 사용, ~/
제외)을 가져 오기 전에 sys.path에 추가하는 것이 좋습니다. 아, 그리고 그런데
import sys
sys.path.append('/home/user/httpdocs/python-libraries/feedparser-4.1/')
print "Content-type: text/html\n\n"
try:
import feedparser
except:
print "Cannot import feedparser.\n"
는 httpdocs
는 웹 서버의 문서 루트처럼 보인다. 도서관을 거기에 두는 것이 가장 좋은 생각입니까? (물론, 당신이 사용할 수있는 유일한 곳 ... 거기 않는 한) 그것은 같은 구문을 피하기 위해 최선의 방법 (일반 노트 등)
편집
:
try:
something
except:
print "error"
이것은 제공 발생하는 실제 오류에 대한 정보는 절대적으로 없습니다. 모듈을 가져 오려고하면 ImportError
이 있다고 확신 할 수 있습니다.
이렇게하면 디버깅이 진짜 지옥입니다. 거기에 있었으므로, 이것으로 수십 시간을 잃었습니다. :)
한번에 하나의 예외 유형을 잡아보십시오. 따라서 :
try:
import SomeModule
except ImportError:
print "SomeModule can't be imported"
traceback 모듈에 익숙해있을 수도 있습니다. 표준 라이브러리에 있으며 사용 가능합니다.그래서, 당신의 예외 처리 코드는 다음과 같이 될 수있다 :
sys.path.append('/home/user/httpdocs/python-libraries/feedparser-4.1/')
try:
import feedparser
except ImportError:
print "Content-type: text/plain\n\n" # text/plain so we get the stacktrace printed well
import traceback
import sys
traceback.print_exc(sys.stdout) # default is sys.stderr, which is error log in case of web server running your script, we want it on standart output
sys.exit(1)
# here goes your code to execute when all is ok, including:
print "Content-type: text/html\n\n"
추적 모듈에 대한 멋진 팁. 감사! – Pranab