【发布时间】:2018-12-17 06:20:28
【问题描述】:
我有这个包结构:
project/
└── src
├── __init__.py
└── App.py
这是 __init__ 文件:
from flask import Flask
from flask_restful import Resource, Api
app = Flask(__name__)
api = Api(app)
还有 App.py 文件:
from . import app, api
from flask_restful import Resource
class HelloWorld(Resource):
def get(self):
return {'hello': 'world'}
api.add_resource(HelloWorld, '/')
if __name__ == '__main__':
app.run(debug=True)
在 App.py 的第一行,我试图从当前包中导入应用程序和 api,但是当我运行应用程序时
python src/App.py
打印出来:
Traceback (most recent call last):
File "src/App.py", line 2, in <module>
from src import app, api
ModuleNotFoundError: No module named 'src'
如何在不改变我想要的结构的想法的情况下解决问题。我知道我可以创建另一个子目录/子包,然后将 init.py 移到那里,然后使用from subpackage import app, api,它会起作用。但我不想那样,我想保持结构。
当我说:
from __init__ import app, api
它可以工作,但此时代码很难看。
【问题讨论】:
标签: python import package this init