Python - 从另一个文件导入类时出错

用户7987134

任何人都可以指导解决错误吗?管理器类方法需要能够创建用户类的实例,但它没有找到模块

下面是文件夹结构和代码以及其他详细信息。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.pyuser/目录中,所以要导入 from user.py,我们要指向当前目录。因此在 期间from .user import User

这是我使用的目录结构。我相信它和你所拥有的一样。

C:.
├───internal
│       main.py
│       __init__.py
│
└───user
    │   models.py
    │   user.py
    │   usermanager.py
    └───__init__.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()

模型.py

class Model():

    def message(self):
        print("This is a Model!")

用户.py

class User():

    def message(self):
        print("This is a User!")

用户管理器.py

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用python将类导入另一个文件时出错

从另一个文件Python导入类变量

Python - 从另一个 .py 文件导入类时遇到问题

如何导入和使用从自身中的另一个文件导入类的python模块?

如何从另一个文件夹中的文件导入python类?

从另一个目录导入类-Python

无法从另一个目录导入python类

如何从另一个目录导入python类

从另一个 python 脚本导入类

从不同的python文件中的另一个类导入全局列表

在另一个python文件中调用带有多个参数的函数时出错

从另一个python文件导入函数时出现问题

Python导入模块在另一个文件中

从Python中的另一个文件导入变量

Python:无法从另一个文件导入字典

Python:从另一个位置导入文件

Python将文件模块导入另一个

从另一个 python 文件导入变量

在 VSCode 中从另一个 python 文件导入一个 python 文件

Python从另一个文件加载类

如何将在python文件中导入的库导入另一个python文件?

Python 3.5.2:导入一个类,该类在子目录中导入另一个类

如何在另一个文件目录中的另一个脚本中导入 Python 文件?

导入另一个 Python 文件运行该文件而不是实际导入它

无法从 python 中的另一个目录导入 python 类

使用从另一个python文件中的文件导入的python dict

是否可以将一个类的方法导入Python中的另一个类?

构造一个类在另一个文件python中的对象

如何从python中的另一个类导入方法或使用该方法?