【发布时间】:2017-08-15 10:27:35
【问题描述】:
我将FLASK_APP 设置为api.py,然后运行flask run,但随后
我收到错误 SystemError: Parent module '' not loaded, cannot perform relative import 。 PyCharm 没有任何错误,这证实了在语法上这是正确的。
api.pi
from . import models
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, Welcome to the API!'
if __name__ == '__main__':
app.run()
目录结构
├── ProjectDirectory
│ ├── flask-api
│ │ ├── venv
│ │ ├── api.py
│ │ └── models.py
│ ├── modelpackage
│ │ ├── __init__.py
│ │ ├── classA.py
│ │ ├── classB.py
│ │ ├── helpers.py
│ │ └── simplescript.py
正如您在上面看到的,api.py 和 models.py 都在同一个目录中,使用 from . import models 行应该将脚本的代码导入到 api.py 中。作为参考,这个 Flask 服务器是使用 virtualenv 制作的,遵循官方 Flask 文档,因此在 flask-api 目录中有一个 venv 目录。
另外,models.py 进一步从modelpackage 导入内容,这就是为什么我将其包含在上面以保持完整性。
这是否与 Flask/VirtualEnv/Directory 结构有关?
【问题讨论】:
标签: python flask virtualenv python-import