Python 第二次路由时Flask应用程序导入不工作
当我第一次在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():
├── 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 -