2016-12-01 1 views
1

처음으로 여기에서 Heroku를 사용합니다. 파이썬 Flask 응용 프로그램을 호스팅하고 싶습니다. 어떻게 일을 시작하는 종류. 나는 heroku local 명령을 사용하여 로컬로 내 응용 프로그램을 테스트하고 싶습니다,하지만 난이 오류를 얻을 :Heroku python 앱을 로컬에서 테스트하는 방법? ImportError : wsgi 모듈이 없습니다.

Procfile :

web: gunicorn choposcope.wsgi --log-file - 

myapp.wsgi 여기

ImportError: No module named wsgi

내 파일입니다을 :

from choposcope import app as application 

오류 스택 추적 :

[2016-12-01 18:36:21 +0100] [9916] [INFO] Starting gunicorn 19.6.0 
6:36:21 PM web.1 | [2016-12-01 18:36:21 +0100] [9916] [INFO] Listening at: http://0.0.0.0:5000 (9916) 
6:36:21 PM web.1 | [2016-12-01 18:36:21 +0100] [9916] [INFO] Using worker: sync 
6:36:21 PM web.1 | [2016-12-01 18:36:21 +0100] [9919] [INFO] Booting worker with pid: 9919 
6:36:34 PM web.1 | [2016-12-01 18:36:34 +0100] [9919] [ERROR] Exception in worker process 
6:36:34 PM web.1 | Traceback (most recent call last): 
6:36:34 PM web.1 | File "/Users/Yann/Documents/dev/choposcope/env/lib/python2.7/site-packages/gunicorn/arbiter.py", line 557, in spawn_worker 
6:36:34 PM web.1 |  worker.init_process() 
6:36:34 PM web.1 | File "/Users/Yann/Documents/dev/choposcope/env/lib/python2.7/site-packages/gunicorn/workers/base.py", line 126, in init_process 
6:36:34 PM web.1 |  self.load_wsgi() 
6:36:34 PM web.1 | File "/Users/Yann/Documents/dev/choposcope/env/lib/python2.7/site-packages/gunicorn/workers/base.py", line 136, in load_wsgi 
6:36:34 PM web.1 |  self.wsgi = self.app.wsgi() 
6:36:34 PM web.1 | File "/Users/Yann/Documents/dev/choposcope/env/lib/python2.7/site-packages/gunicorn/app/base.py", line 67, in wsgi 
6:36:34 PM web.1 |  self.callable = self.load() 
6:36:34 PM web.1 | File "/Users/Yann/Documents/dev/choposcope/env/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 65, in load 
6:36:34 PM web.1 |  return self.load_wsgiapp() 
6:36:34 PM web.1 | File "/Users/Yann/Documents/dev/choposcope/env/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp 
6:36:34 PM web.1 |  return util.import_app(self.app_uri) 
6:36:34 PM web.1 | File "/Users/Yann/Documents/dev/choposcope/env/lib/python2.7/site-packages/gunicorn/util.py", line 357, in import_app 
6:36:34 PM web.1 |  __import__(module) 
6:36:34 PM web.1 | ImportError: No module named wsgi 
6:36:34 PM web.1 | [2016-12-01 18:36:34 +0100] [9919] [INFO] Worker exiting (pid: 9919) 
6:36:34 PM web.1 | [2016-12-01 18:36:34 +0100] [9916] [INFO] Shutting down: Master 
6:36:34 PM web.1 | [2016-12-01 18:36:34 +0100] [9916] [INFO] Reason: Worker failed to boot. 
[DONE] Killing all processes with signal null 
6:36:34 PM web.1 Exited with exit code 3 

또한 wsgi 모듈이 기본적으로 플라스크에 설치되어야하는지 여부는 알 수 없습니다. 내 가상 환경에서 pip install mod_wsgi을 실행하려고 할 때,이 오류 얻을 : 당신은 그것을 다운로드 할 필요가 없습니다

pip install mod_wsgi 
Collecting mod_wsgi 
    Using cached mod_wsgi-4.5.9.tar.gz 
    Complete output from command python setup.py egg_info: 
    Traceback (most recent call last): 
     File "<string>", line 1, in <module> 
     File "/private/var/folders/_1/bhy3l2kj5l36_859j956y87m0000gn/T/pip-build-h3zlPa/mod-wsgi/setup.py", line 284, in <module> 
     APR_INCLUDES = get_apr_includes().split() 
     File "/private/var/folders/_1/bhy3l2kj5l36_859j956y87m0000gn/T/pip-build-h3zlPa/mod-wsgi/setup.py", line 245, in get_apr_includes 
     stdout=subprocess.PIPE, stderr=subprocess.PIPE) 
     File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 710, in __init__ 
     errread, errwrite) 
     File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1335, in _execute_child 
     raise child_exception 
    OSError: [Errno 2] No such file or directory 

    ---------------------------------------- 
Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/_1/bhy3l2kj5l36_859j956y87m0000gn/T/pip-build-h3zlPa/mod-wsgi/ 
+0

어떻게 heroku를 설치 했습니까? – daphtdazz

+0

Apache가 무엇이 필요하다고 생각하는지 확실하지 않습니다. Heroku는 그것을 전혀 사용하지 않으며 개발에 반드시 필요한 것은 아닙니다. 그러나 당신은 우리가 질문에 대답하기에 충분한 * 정보를 거의주지 못했습니다. 프로젝트 구조는 어떻게 생겼습니까? virtualenv에 있습니까? 어떤 라이브러리를 설치 했습니까? 귀하의 procfile에 무엇이 있습니까? 그리고 가장 중요한 것은, * full * 에러 추적 표시가 무엇을 말합니까? –

+0

요청한 세부 정보를 추가했습니다. 모든 것이 같은 폴더에 있습니다. – ypicard

답변

2

: 자세한 내용은

from yourapplication import app as application 

이 플라스크 설명서를 참조

choposcope/wsgi.py 

디렉터리와 파일의 설정 구조를 표시하지 않지만 오류로 인해 이러한 파일이 존재하지 않음을 나타냅니다.

Heroku에 mod_wsgi-express를 설치하는 방법이 있지만,이 메커니즘이 적극적으로 지원되지 않으므로 권장하지 않습니다.

만약 Heroku에서 사용되는 것과 일치시키기 위해 지역 개발을 위해 gunicorn을 사용하고자한다면, mod_wsgi-express를 사용할 필요가 없지만, 거기에 mod_wsgi-express를 설치할 필요는 없습니다. if mod_wsgi-express (수동 아파치/mod_wsgi 설정이 아닌)로 사용하기를 원했던 것은 다른 옵션을 사용할 수있는 것처럼 로컬 개발하기 쉽습니다.

사용중인 파일 시스템 구조를 정확하게 알지 못하면 파일 이름을 myapp.wsgi에서 wsgi.py으로 변경해야합니다. 파일이 wsgi.py를 호출 할 필요가 왜 이렇게

web: gunicorn wsgi --log-file - 

wsgi 인수는 파이썬 모듈 이름이며, 그런 다음이 할 수 Procfile을 변경합니다. gunicorn을 사용할 때 WSGI 응용 프로그램 시작점은 기본적으로 application이 될 것으로 예상합니다. 당신은 아마 또한 wsgi.py 파일없이 멀리 입수 및 사용 수 :

로컬 설치하려고 할 때 pip install mod_wsgi이 실패한 이유에
web: gunicorn choposcope:app --log-file - 

, 그 때문에 맥 OS X에 존재하고 엑스 코드 개발자 명령을 가지고 있지 가능성 라인 도구가 설치되어 있습니다.홈 브루 (HomeBrew)에 아파치 웹 서버가 설치되어 있지 않거나 불완전합니다.

+0

이름을 wsgi.py로 변경하면 트릭을 만들었습니다. 고맙습니다. – ypicard

1

을, 당신은 그것을 만들어야합니다.

파일의 내용

은 다음과 같아야합니다, gunicorn 당신이 파일이라는 것으로 기대하고있다 당신이 준 명령 줄에서 http://flask.pocoo.org/docs/0.11/deploying/mod_wsgi/#creating-a-wsgi-file

+0

오류가 변경되었지만 가져올 wsgi 모듈이 필요합니다. 그게 어디 있겠 어? 기본적으로 플라스크와 함께 설치되어야하는지는 모르지만 제 가상 환경에서 pip를 mod_wsgi에 설치하려고하면 실패합니다. 게시물에 오류를 추가하겠습니다. – ypicard

관련 문제