根据设计,Python 3不能将包含相对导入的模块作为脚本运行。尝试这样做会产生以下错误:
$ python mypackage/run.py
[...traceback...]
SystemError: Parent module '' not loaded, cannot perform relative import
解决方案是调用模块python -m mypackage.run
而不是更熟悉的python mypackage/run.py
.
在 Flask 中,后者是通常运行开发服务器的方式。但是,Flask 开发服务器会立即生成一个重新加载代码的子进程(然后在磁盘上更改文件时重新加载代码)。
结果是这样的:
$ python -m mypackage.run
* Running on http://127.0.0.1:5000/
* Restarting with reloader
[...traceback...]
SystemError: Parent module '' not loaded, cannot perform relative import
所以现在服务器正常启动,但子进程重新加载代码不正确。