从父目录运行flask脚本

时间:2020-11-02 19:11:04

标签: python flask

我有python脚本python_proj.py。打印很少,功能简单。它调用了烧瓶脚本:

os.system("flask run")

烧瓶脚本位于同一目录中。当我从当前目录中的终端运行这些文件时,一切正常:

user123@user123:~/PycharmProjects/python_and_bash$ ./python_proj.py

但是当我在父目录(例如'~')中并且尝试运行此脚本时:

user123@user123:~$ ./PycharmProjects/python_and_bash/python_proj.py

它不起作用,并给我这个错误:

* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
Usage: flask run [OPTIONS]

Error: Could not locate a Flask application. You did not provide the "FLASK_APP" environment variable, and a "wsgi.py" or "app.py" module was not found in the current directory.

该怎么做?我需要将此应用发送给非技术人员。它应该无处不在

2 个答案:

答案 0 :(得分:0)

您可以使用以下代码找到脚本目录的绝对路径:

import pathlib


parent_folder = pathlib.Path(__file__).parent.absolute() # Get the absolute path of parent folder

os.environ['FLASK_APP'] = parent_folder / 'your_flask_app.py' # Set environment variable
os.system("flask run")

答案 1 :(得分:0)

我在proj_python.py脚本中添加了这些行。现在可以了。

 path = pathlib.Path(os.path.realpath(__file__))
 path = str(path.parent) + "/app.py"
 os.system(path)

请注意!请不要在这些行之后加上os.system("flask run")!这将导致烧瓶脚本启动2次!第一次启动将由以下原因引起:os.system(path),在ctrl+c之后或中断信号os.system("flask run")将第二次启动。