Python 3-无法对在virtualenv中创建的flask服务器应用程序进行相对导入
我将Python 3-无法对在virtualenv中创建的flask服务器应用程序进行相对导入,python,flask,virtualenv,python-import,Python,Flask,Virtualenv,Python Import,我将FLASK\u应用程序设置为api.py,然后运行FLASK run,但是 我收到错误SystemError:未加载父模块“”,无法执行相对导入。PyCharm上没有任何错误,这证实了语法上这是正确的 api.pi from . import models from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello, Welcome to the API
FLASK\u应用程序设置为api.py
,然后运行FLASK run
,但是
我收到错误SystemError:未加载父模块“”,无法执行相对导入
。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
都位于同一目录中,并且使用的是来自的。导入模型
行应将脚本的代码导入api.py
。作为参考,此flask服务器是根据flask官方文档使用virtualenv
创建的,因此在flask api
目录中有一个venv
目录
另外,models.py
进一步从modelpackage
导入内容,因此为了完整性,我将其包含在上面
这与Flask/VirtualEnv/目录结构有关吗 当模块用作主模块时,其名称为\uuuu main\uuuu
。因此,相对进口不起作用。你应该使用绝对进口。
即
来自flask_api导入模型
这里是更多信息的链接
请注意,相对导入基于当前模块的名称。由于主模块的名称始终为“main”,因此用作Python应用程序主模块的模块必须始终使用绝对导入
注意:根据PEP8,使用绝对导入,而不是相对导入。当模块用作主模块时,其名称为\uuuuuu main\uuuu
。因此,相对进口不起作用。你应该使用绝对进口。
即
来自flask_api导入模型
这里是更多信息的链接
请注意,相对导入基于当前模块的名称。由于主模块的名称始终为“main”,因此用作Python应用程序主模块的模块必须始终使用绝对导入
注意:根据PEP8,使用绝对导入,而不是相对导入。事实上,我从你的回答中意识到,我忘了添加\uuuu init\uuuuuuuuuy.py
是的。如果当前模块的名称为\uuuuuu main\uuuuu
的话,那就行了。实际上,我从你的回答中意识到,我忘了添加\uuuuu init\uuuuuuu.py
是的。如果当前模块的名称为\uuuu main\uuuu