문제

어떤 이유로 든 호출 할 때 추적/bpt 트랩 오류가 발생합니다. urllib.urlopen. 나는 둘 다 시도했다 urllib 그리고 urllib2 동일한 결과로. 오류를 던지는 코드는 다음과 같습니다.

def get_url(url):
    from urllib2 import urlopen
    if not url or not url.startswith('http://'): return None
    return urlopen(url).read() # FIXME!

이 코드는 web.py와 함께 체리 웹 서버에서 실행 중이라고 덧붙여 야합니다.

누군가 추적을 요청했습니다. 불행히도, 아무것도 없습니다. Trace/BPT trap 터미널에 출력되고 프로세스가 끝납니다. 예를 들어

dloewenherz@andros project $ sudo ./index.py 80
http://0.0.0.0:80/
# Here I visit the page which contains the get_url(url) method
Trace/BPT trap
dloewenherz@andros project $

편집 : OS X 10.6.2, Web.py 0.33, Python 2.6.2 및 Cherrypy 3.1.2를 실행하고 있습니다.

도움이 되었습니까?

해결책

메인 파일 상단에 다음 줄을 추가하면 문제가 해결되었습니다.

import urllib2
urllib2.install_opener(urllib2.build_opener())

다시 말해, urllib2 모듈을 가져 오는 것만으로는 충분하지 않지만 실제로 주 스레드에서 오프너를 만들어야합니다.

다른 팁

OS X 10.6에서 이것을 실행하고 있습니까? 분명히 스레드와 모듈을 처음으로 가져 오는 것은 함께 잘 작동하지 않습니다. 스레드 외부에서 urllib2를 가져올 수 없는지 확인하십시오.

다음 스레드에는 몇 가지 자세한 내용이 있습니다. Python 스레딩 모듈이있는 Trace/BPT 트랩

urllib의 가져 오기를 동일한 파일의 맨 위로 옮기거나 스레드에서 처음으로 모듈을 가져 오는 데 문제가있는 것처럼 보이므로 동일하게 다른 곳에서도 가져옵니다. Main () 함수로 파일을 파일입니다.

편집하다: OS X, Python, Cherrypy 및 Web.py의 어떤 버전을 실행하고 있습니까? OS X 10.5.8, Python 2.6, Cherrypy 3.1.2 및 Web.py 0.33을 사용하고 있으며 아래 코드를 사용하여 문제를 재현 할 수 없습니다.

import web

urls = (
  '/', 'index'
)

app = web.application(urls, globals())

class index:
    def GET(self):
        from urllib2 import urlopen
        return urlopen("http://google.se/").read()

if __name__ == "__main__": app.run()


$ sudo python index.py 80
http://0.0.0.0:80/
127.0.0.1:59601 - - [08/Nov/2009 09:46:40] "HTTP/1.1 GET /" - 200 OK
127.0.0.1:59604 - - [08/Nov/2009 09:46:40] "HTTP/1.1 GET /extern_js/f/CgJzdhICc2UgACswCjhBQB0sKzAOOAksKzAYOAQsKzAlOMmIASwrMCY4BSwrMCc4Aiw/dDWkSd2jmF8.js" - 404 Not Found
127.0.0.1:59601 - - [08/Nov/2009 09:46:40] "HTTP/1.1 GET /logos/elmo-hp.gif" - 404 Not Found
127.0.0.1:59601 - - [08/Nov/2009 09:46:40] "HTTP/1.1 GET /images/nav_logo7.png" - 404 Not Found

이 코드가 당신의 마지막 문제를 재현 할만 큼 충분합니까? 그렇지 않다면 도움이 되려면 더 많은 정보가 필요합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top