启动应用程序会在启动后立即导致崩溃。目前还不清楚这个错误可能意味着什么,因为它刚刚加载了声称找不到的模块。你知道吗
它可能是一条红鲱鱼,但为什么它会立即重启?你知道吗
我能找到的关于此错误消息的大多数其他引用是当文件被作为脚本调用时,而不是像我已经做的那样作为模块(-m)调用时
(.virtualenv3) rob@positron:~/Projects/<my_proj>/codebase/src$ source ../../.webapp.env && python3 -m webapp.main
* Serving Flask app "main" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: on
INFO:werkzeug: * Running on http://0.0.0.0:8002/ (Press CTRL+C to quit)
INFO:werkzeug: * Restarting with stat
/home/rob/Projects/<myproj>/.virtualenv3/bin/python3: Error while finding module specification for 'webapp.main' (ModuleNotFoundError: No module named 'webapp')
编辑1:这里的一些输出表明,调用方法肯定可以与同一个包中的python模块一起工作(尽管是一个基本测试)
(.virtualenv3) rob@positron:~/Projects/<myproj>/codebase/src$ ls -la webapp/*.py
-rw-r--r-- 1 rob rob 0 Sep 9 15:37 webapp/__init__.py
-rw-r--r-- 1 rob rob 11494 Dec 13 13:19 webapp/main.py
-rw-r--r-- 1 rob rob 19 Dec 13 13:36 webapp/test.py
(.virtualenv3) rob@positron:~/Projects/<myproj>/codebase/src$ python -m webapp.test
Hello SO
(.virtualenv3) rob@positron:~/Projects/<myproj>/codebase/src$ python -m webapp.main
* Serving Flask app "main" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: on
INFO:werkzeug: * Running on http://0.0.0.0:8812/ (Press CTRL+C to quit)
INFO:werkzeug: * Restarting with stat
/home/rob/Projects/<myproj>/.virtualenv3/bin/python: Error while finding module specification for 'webapp.main' (ModuleNotFoundError: No module named 'webapp')
编辑2?只是为了让werkzeug玩得开心?你知道吗
编辑3。诊断时,烧瓶正在改变过程的CWD。你知道吗
下面是一个测试文件(webapp/test.py
)
import os
print('cwd: ', os.getcwd())
from flask import Flask
Flask(__name__).run(port=9991, debug=True)
当处于调试模式的werkzeug重新加载应用程序时,观察os.getcwd()
的输出变化
(.virtualenv3) rob@positron:~/Projects/<myproj>/codebase/src$ PYTHONPATH=`pwd` FLASK_ENV=development python -m webapp.test
cwd: /home/rob/Projects/<myproj>/codebase/src
* Serving Flask app "test" (lazy loading)
* Environment: development
* Debug mode: on
* Running on http://127.0.0.1:9991/ (Press CTRL+C to quit)
* Restarting with stat
cwd: /home/rob/Projects/<myproj>
* Debugger is active!
* Debugger PIN: 134-807-518
这是因为“如果”您有dotenv可用,Flask将运行它,并假定找到的.env文件的位置是项目的根目录,并切换到该目录。你知道吗
谢谢你。不过还没有解决办法。你知道吗
https://github.com/pallets/flask/blob/master/src/flask/cli.py#L607
添加
FLASK_SKIP_DOTENV=1
跳过
os.chdir()
相关问题 更多 >
编程相关推荐