Python 第二次路由时Flask应用程序导入不工作

Python 第二次路由时Flask应用程序导入不工作,python,flask,Python,Flask,当我第一次在flask路由中导入文件时,当我点击该路由时,导入工作,但第二次它不工作,依此类推。我的两个文件都在同一个主目录中 ├── main │ ├── main1.py │ └── main2.py main1.py from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return "hello" @app.route('/call') def call():

当我第一次在flask路由中导入文件时,当我点击该路由时,导入工作,但第二次它不工作,依此类推。我的两个文件都在同一个主目录中

├── main
│   ├── main1.py
│   └── main2.py
main1.py

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return "hello"

@app.route('/call')
def call():
    #This is the import i am talking about
    import main2
    print("main1")
    return "call"

if __name__ == "__main__":
    app.run(debug =True, host='0.0.0.0',port = '5005')
main2.py

print("main2")
终端输出(点击url 3次,我们可以看到3个输出)


第一次输出被接受时,在导入工作的地方,我们可以看到“main2”打印出来,但在反复点击导入不工作时,我看不到“main2”打印出来。

问题来自
import
命令:当您导入文件时,该文件被解析并加载:如果您有一个与您所拥有的语句类似的
print
语句,则在导入该文件时将运行该语句。它将只运行一次,这是您在日志中观察到的

您需要在
main2.py
中声明一个函数,并在
main1.py
中调用此命令。然后,每次您进行
调用
访问时,都会运行它

以下是一个工作示例:

#文件main1.py
从烧瓶进口烧瓶
app=烧瓶(名称)
@应用程序路径(“/”)
def hello_world():
回复“你好”
@app.route(“/call”)
def call():
从main2导入功能2
返回“Hello from”+function2()
如果名称=“\uuuuu main\uuuuuuuu”:
运行(debug=True,host='0.0.0.0',port='5005')
#文件main2.py
def function2():
返回“世界2”

cool,这个解决方案解决了我的问题,但我一直在寻找这个解决方案,这要感谢@Sergey Shubinyes,因为@Sergey Shubinyes完美地解决了我的问题并理解了它
* Serving Flask app "main1" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Running on http://0.0.0.0:5005/ (Press CTRL+C to quit)
 * Restarting with inotify reloader
 * Debugger is active!
 * Debugger PIN: 226-069-185
127.0.0.1 - - [30/Apr/2020 10:48:42] "GET / HTTP/1.1" 200 -
main2
main1
127.0.0.1 - - [30/Apr/2020 10:48:46] "GET /call HTTP/1.1" 200 -
main1
127.0.0.1 - - [30/Apr/2020 10:48:49] "GET /call HTTP/1.1" 200 -
main1
127.0.0.1 - - [30/Apr/2020 10:48:50] "GET /call HTTP/1.1" 200 -