내가 VIRTUALENV 플라스크를 사용하고, 다음과 같이 내 데모 플라스크 응용 프로그램이 구성되어 있습니다 : hello.py
왜 Flask의 app.config.from_object()는 gunicorn과 다르게 동작합니까?
from flask import Flask
def create_app():
app = Flask(__name__, instance_relative_config=True)
app.config.from_object("config.settings")
@app.route('/')
def index():
return app.config["HELLO"]
return app
if __name__ == "__main__":
app = create_app()
app.run()
settings.py
의
app/
hello.py
config/
settings.py
venv/
virtualenv files
내용은이 값
DEBUG = True
HELLO = "Hello there from /config !"
I을 포함 gunicorn -b 0.0.0.0:9000 --access-logfile - "app.hello:create_app()"
을 사용하여 gunicorn으로이 작업을 성공적으로 실행할 수 있으며 오류없이 작동합니다.
그러나 루트에서 python app/hello.py
을 실행하면 ImportError: No module named 'config'
오류가 발생합니다. 이 방식으로 실행하면 플라스크가 config 디렉토리를 찾을 수없는 것 같습니다.
config
디렉토리를 app
안에 옮길 수 있지만 그렇게하면 대신 gunicorn에 오류가 발생할 수 있습니다. 두 가지 방법 모두 "일하는 것"이 가능하지 않습니까? 무엇보다 중요한 이유는 무엇입니까?
config에'__init __. py' 파일을 추가하여 패키지로 만드시겠습니까? – syntonym
이전에'config /'에 빈'__init __. py '를 추가하려고했으나 도움이되지 않았습니다. 같은 오류가 발생합니다. – peonicles
config.settings를 수동으로 가져온 다음 from_object (config.settings)를 사용하여 가져올 수 있습니다. 어쩌면 gunicorn이 PYTHONPATH를 어떻게 든 조작합니다. config.settings를 가져올 수 있도록 pythonpath에 폴더를 추가 할 수 있습니다. (manully importing은 아무것도 변경하지 않아야한다. 그러나 설정 모듈을 import 할 수 없다는 것을 probaly하면 알 수있다.) – syntonym