解决Windows后台脚本启动部署flask项目导入问题

在windows上使用终端窗口cmd启动python+flask程序会包导入的错误,这是由于个人项目架构搭建的问题,这里把create_app函数放在了src目录的init.py文件下了,从而导致找不到src这个模块,在pycharm是可以直接运行的,但在此处不行,一般正常来说是可以的,在linux上使用虚拟环境运行是没有问题的。
在这里插入图片描述
init.py

import os

from flask import Flask
from flask_cors import CORS


def create_app():
    app = Flask(__name__)  # 创建1个Flask实例
    PIC_FOLDER = os.path.join(app.root_path, 'static')
    CORS(app, resources=r'/*')
    # 3. register bluePrint
    from com.callElevator import callElevator_blu
    app.register_blueprint(callElevator_blu)
    return app

main.py

from src import create_app
# 创建应用
app = create_app()

if __name__ == '__main__':
    """ server host/port"""
    connectHost = config.LOCAL_SERVER_HOST
    connectPort = config.LOCAL_SERVER_PORT

    """ start flask """
    app.run(host=connectHost, port=connectPort, debug=True)

以上这样的导入方式在windows上是不行的

解决方法:直接在main.py文件中创建create_app这个函数,直接用即可。

main.py

def create_app():
    app = Flask(__name__)  # 创建1个Flask实例
    PIC_FOLDER = os.path.join(app.root_path, 'static')
    CORS(app, resources=r'/*')
    # 3. register bluePrint
    from com.callElevator import callElevator_blu
    app.register_blueprint(callElevator_blu)
    return app

logger = MyLogger(prepareLogging("smartHomeService", consts.LOG_DIR))
# 创建应用
app = create_app()

if __name__ == '__main__':
    # conMQttClientThread = threading.Thread(target=connectMQttClient)
    # conMQttClientThread.start()
    connectMQttClient(logger)

    """ server host/port"""
    connectHost = config.LOCAL_SERVER_HOST
    connectPort = config.LOCAL_SERVER_PORT

    """ start flask """
    app.run(host=connectHost, port=connectPort, debug=True)

在这里插入图片描述
可以都看到,项目使用.bat文件直接启动成功!

附上.bat脚本文件代码

title=smartHomeService-V1.0
color 0F
rem @echo off
cd %~dp0
set cd=%~dp0
set PY_HOME=D:\Install\Python3.5.3
set PYTHONPATH=D:\Install\Env\ElevDispatching\Lib\site-packages;
set PATH=%PATH%;%PY_HOME%;%PY_HOME%/Scripts;%cd%/Scripts
@echo on
cd src
python main.py

猜你喜欢

转载自blog.csdn.net/qq_43030934/article/details/107333532