2016-11-15 5 views
0

내가 상관없이 내가이 오류가 무엇인지, flask run와 플라스크 응용 프로그램을 실행하려고 없지만 해요 "를 FLASK_APP 환경 변수를 제공하지 않았다" 수퍼 유저로 명령을 실행하기 위해 포트 80에서 앱을 실행하고 있습니다. 궁극적으로 Flask-Migrate의 docs에 설명 된대로 flask db init 명령을 사용해야하지만 flask은이를 수행 할 앱을 찾을 수 있어야합니다. 다음 다음 FLASK_APP는 플라스크는 말한다

수출, VIRTUALENV 활성화 VIRTUALENV

$ export FLASK_APP=run.py 
$ printenv FLASK_APP 
run.py 
$ . env/bin/activate 
(env) $ sudo flask run 
Error: Could not locate Flask application. You did not provide the  FLASK_APP environment variable. 

를 활성화, 내 bash는 프로필에 있다는 보장

FLASK_APP 환경 변수를 내보내기 : 여기에 내가 성공하지, 시도했습니다 무엇

$ . env/bin/activate (env) $ export FLASK_APP=run.py (env) $ printenv FLASK_APP run.py (env) sudo flask run Error: Could not locate Flask application. You did not provide the FLASK_APP environment variable. 

위의 두 개는 전체 경로 인 /Users/me/code/project/run.py

$ printenv FLASK_APP 
/Users/me/code/project/run.py 

프로젝트 구조

myproject/ 
    ├──app/ 
    | ├── __init__.py 
    | ├── models.py 
    | ├── templates/ 
    | └── views.py 
    ├── tests/ 
    ├── run.py 
    ├── requirements.txt 
    └── config.py 

지금까지 아무 일하지하고 오류 메시지가 각각의 경우에 동일합니다. 이 오류를 해결하려면 어떻게해야합니까?

+0

환경을 내보내는 데 사용한 파일 구조와 정확한 명령이 유용 할 것입니다. – oxalorg

+1

안녕하세요 @oxalorg, 질문이 업데이트되었습니다. – rosendin

답변

0

sudosudo flask run에서 삭제하면 Flask는 $FLASK_APP을 찾습니다. 그러나 오류 메시지 socket.error: [Errno 13] Permission denied이 표시됩니다. Flask가 수퍼 유저로 실행할 때 $FLASK_APP을 찾을 수 없기 때문에이 문제를 해결할 수있는 방법이 없습니다. 순환 논리처럼 보입니다.

포트를 80에서 5000으로 변경하고 sudoflask run으로 삭제하여 관리 할 수있었습니다. 이것은 괜찮아요, 나는 생산에서 포트 80에서 애플 리케이션을 실행하는 방법을 찾아야 할 것입니다.

데이터베이스를 삭제하고 다시 생성 한 후 db.create_all으로 전화를 제거한 후 flask db init을 실행할 수있었습니다.

편집 - 4/27/17 포트 80이 실제로 내 서버의 방화벽에 의해 차단되어 (방화벽이 제 제어 범위를 벗어남) 열린 포트에서 앱을 실행하면 문제가 해결되었습니다.

1

init 파일에 app=App(__name__)을 호출한다고 가정합니다. 기술적으로 run.py와 잘 작동 할지라도 이것을 시도해보십시오.

export FLASK_APP=app/__init__.py; flask run 

또한 값 실제로이 플라스크에 직접 액세스 환경 변수에 저장 얻고뿐만 아니라 배시 프로필되는지 확인해 echo $FLASK_APP 나중에 수행하려고.