无法从顶级包中导入 var
Cannot import var from top package
这是我的项目结构:
myProject/
|
|-- src/
| |-- services/
| | |-- __init__.py
| | |-- users.py
| |
| |-- main.py
| |-- ...
...
在 main 中我有 mongo var 需要在 users.py
中使用
# src/main.py
from flask import Flask
from flask_pymongo import PyMongo
import config
from services import api
app = Flask(__name__)
app.config["MONGO_URI"] = "mongodb://localhost:27017/myApp"
mongo = PyMongo(app)
api.init_app(app)
if __name__ == '__main__':
app.run(host=config.HOST, port=config.PORT, debug=config.DEBUG)
在服务中init.py
# src/services/__init__.py
from flask_restx import Api
from .users import api as np_users
import config
api = Api(
title=config.NAME,
version=config.VERSION,
description=config.DESCRIPTION,
)
api.add_namespace(np_users, path='/api/v1/users/users')
然后我尝试导入 mongo var in:
# src/services/users.py
...
from main import mongo
api = Namespace('users', description='users')
...
当我这样做时:
python main.py
它抛出这个错误:
回溯(最近调用最后):
文件“main.py”,第 7 行,位于
从服务导入 api
文件“C:\myProject\src\services_init_.py”,第 6 行,在
from .users import api as ns_users
文件“C:\myProject\src\services\users.py”,第 5 行,inices\users.py”,第 5 行,位于
从主要进口 mongo
文件“C:\myProject\src\main.py”,第 7 行,在 .py 中,第 7 行,在
从服务导入 api end_analisis_prediccion_equipos_b
导入错误:无法从 'services' 导入名称 'api' (C:\myProject\src\services_init_.py)
为了能够从 main (main.py) 导入 mongo,您必须在导入 api 来自服务。
你的 main.py 应该是这样的:
from flask import Flask
from flask_pymongo import PyMongo
import config
app = Flask(__name__)
app.config["MONGO_URI"] = "mongodb://localhost:27017/myApp"
mongo = PyMongo(app)
from services import api
api.init_app(app)
if __name__ == '__main__':
app.run(host=config.HOST, port=config.PORT, debug=config.DEBUG)
虽然这可行,但使用这种模式(from main import ...)不是一个好习惯。你可以查看一些解释here.
这是我的项目结构:
myProject/
|
|-- src/
| |-- services/
| | |-- __init__.py
| | |-- users.py
| |
| |-- main.py
| |-- ...
...
在 main 中我有 mongo var 需要在 users.py
中使用# src/main.py
from flask import Flask
from flask_pymongo import PyMongo
import config
from services import api
app = Flask(__name__)
app.config["MONGO_URI"] = "mongodb://localhost:27017/myApp"
mongo = PyMongo(app)
api.init_app(app)
if __name__ == '__main__':
app.run(host=config.HOST, port=config.PORT, debug=config.DEBUG)
在服务中init.py
# src/services/__init__.py
from flask_restx import Api
from .users import api as np_users
import config
api = Api(
title=config.NAME,
version=config.VERSION,
description=config.DESCRIPTION,
)
api.add_namespace(np_users, path='/api/v1/users/users')
然后我尝试导入 mongo var in:
# src/services/users.py
...
from main import mongo
api = Namespace('users', description='users')
...
当我这样做时:
python main.py
它抛出这个错误:
回溯(最近调用最后): 文件“main.py”,第 7 行,位于 从服务导入 api 文件“C:\myProject\src\services_init_.py”,第 6 行,在 from .users import api as ns_users 文件“C:\myProject\src\services\users.py”,第 5 行,inices\users.py”,第 5 行,位于 从主要进口 mongo 文件“C:\myProject\src\main.py”,第 7 行,在 .py 中,第 7 行,在 从服务导入 api end_analisis_prediccion_equipos_b 导入错误:无法从 'services' 导入名称 'api' (C:\myProject\src\services_init_.py)
为了能够从 main (main.py) 导入 mongo,您必须在导入 api 来自服务。 你的 main.py 应该是这样的:
from flask import Flask
from flask_pymongo import PyMongo
import config
app = Flask(__name__)
app.config["MONGO_URI"] = "mongodb://localhost:27017/myApp"
mongo = PyMongo(app)
from services import api
api.init_app(app)
if __name__ == '__main__':
app.run(host=config.HOST, port=config.PORT, debug=config.DEBUG)
虽然这可行,但使用这种模式(from main import ...)不是一个好习惯。你可以查看一些解释here.