任何人都可以指导解决错误吗?管理器类方法需要能够创建用户类的实例,但它没有找到模块
下面是文件夹结构和代码以及其他详细信息。init .py 文件为空
Internal folder
->main.py
->__init__.py
->User Folder
-> user.py
-> models.py
-> usermanager.py
-> __init__.py
ModuleNotFoundError: No module named 'models'
at <module> (/home/vmagent/app/internal/user/usermanager.py:4)
at <module> (/home/vmagent/app/main.py:2)
at import_app (/env/lib/python3.6/site-packages/gunicorn/util.py:352)
at load_wsgiapp (/env/lib/python3.6/site-
packages/gunicorn/app/wsgiapp.py:52)
at load (/env/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py:65)
at wsgi (/env/lib/python3.6/site-packages/gunicorn/app/base.py:67)
at load_wsgi (/env/lib/python3.6/site-
packages/gunicorn/workers/base.py:135)
at init_process (/env/lib/python3.6/site-
packages/gunicorn/workers/base.py:126)
at spawn_worker (/env/lib/python3.6/site-
packages/gunicorn/arbiter.py:578)
main.py 代码
from internal.account import user,usermanager
def registerBlueprint(app, blueprint, manager):
blueprint.manager = manager
app.register_blueprint(blueprint)
registerBlueprint(app, user.request, usermanager)
用户.py代码
request = Blueprint('flex.user', __name__)
@request.route('/v1/user', methods=['POST'])
def CreateAccount():
test = request.manager.UserManager()
return test.CreateUser()
用户管理器.py
from models import User
class UserManager:
def __init__(self):
pass
def CreateUser(self):
logger.log_text("AccountManger")
data = json.dumps(dict(
email="[email protected]",
password="Test124"
))
user = User(data)
user.create()
responseObject = dict(status='success', message='Successfully
registered.')
return make_response(jsonify(responseObject)), 201
Python 路径可能会变得有点棘手。我不认为这是最好的方法,但这是我在午餐时一起破解的。也许它可以带你去你需要去的地方。
当你运行时main.py
,你在internal/
目录中。您需要上升一个级别,然后访问该user/
目录。这就是sys.path.append('../')
. 模块usermanager.py
在user/
目录中,所以要导入 from user.py
,我们要指向当前目录。因此在 期间from .user import User
。
这是我使用的目录结构。我相信它和你所拥有的一样。
C:.
├───internal
│ main.py
│ __init__.py
│
└───user
│ models.py
│ user.py
│ usermanager.py
└───__init__.py
该__init__.py
文件是空的。它们的存在向 Python 表明目录是模块1。
import sys
sys.path.append('../')
from user import user
from user import usermanager
from user import models
my_user = user.User()
my_user.message()
my_user_manager = usermanager.UserManager()
my_user_manager.message()
my_user_manager.CreateUser()
my_model = models.Model()
my_model.message()
class Model():
def message(self):
print("This is a Model!")
class User():
def message(self):
print("This is a User!")
from .user import User
class UserManager():
def message(self):
print("This is a UserManager!")
def CreateUser(self):
new_user = User()
print("I created the user: ", new_user)
现在,当我打电话时,main.py
我得到:
c:\project\internal>python main.py
This is a User!
This is a UserManager!
I created the user: <user.user.User object at 0x0000000002A61EB8>
This is a Model!
每个人都在与其他人交谈。希望您可以将其推断到您的用例中!如果没有,Chris Yeh 的一篇文章“ Python 导入语句权威指南”可能对您有所帮助。
1请参阅__init__.py 是什么?以了解有关其工作原理的更多信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句