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

Python-从另一个文件导入类时出错,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,有人能指导解决错误吗?manager类方法将需要创建用户类实例的能力,但它找不到模块 下面是文件夹结构和代码以及其他详细信息init.py文件为空 Internal folder ->main.py ->__init__.py ->User Folder -> user.py -> models.py -> usermanager.py -> __init__.py ModuleNotFou

有人能指导解决错误吗?manager类方法将需要创建用户类实例的能力,但它找不到模块

下面是文件夹结构和代码以及其他详细信息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)
user.py代码

request = Blueprint('flex.user', __name__)

@request.route('/v1/user', methods=['POST'])
def CreateAccount():
   test = request.manager.UserManager()
   return test.CreateUser()
usermanager.py

from models import User

class UserManager:

   def __init__(self):
    pass

   def CreateUser(self):
      logger.log_text("AccountManger")
      data = json.dumps(dict(
        email="Hello@123.com",
        password="Test124"
       ))
       user = User(data)
       user.create()
       responseObject = dict(status='success', message='Successfully 
       registered.')
       return make_response(jsonify(responseObject)), 201

标准库中没有
models
模块,并且此处没有列出名为
models.py
的文件,因此python无法找到它。如果
models.py
位于某个子目录中,则该子目录必须位于该子目录中,并且您需要确保它们包含一个
\uuuuu init\uuuuuu.py
文件。这就是您在此处遇到的错误的含义。

标准库中没有
models
模块,并且此处没有列出名为
models.py
的文件,因此python无法找到它。如果
models.py
位于某个子目录中,则该子目录必须位于该子目录中,并且您需要确保它们包含一个
\uuuuu init\uuuuuu.py
文件。这就是您在这里遇到的错误的含义。

Python路径可能会变得有些棘手。我并不认为这是最好的方法,但这是我在午餐时拼凑的。也许它能让你到达你需要去的地方

运行
main.py
时,您处于
internal/
目录中。您需要升级一级,然后访问
user/
目录。
sys.path.append(“../”)
就是这样。模块
usermanager.py
位于
user/
目录中,因此要从
user.py
导入,我们需要指向当前目录。因此,
from.user导入user
中的时间段

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

C:.
├───internal
│       main.py
│       __init__.py
│
└───user
    │   models.py
    │   user.py
    │   usermanager.py
    └───__init__.py
__初始值
\uuuu init\uuuu.py
文件为空。它们的存在向Python表明目录是modules1

main.py models.py user.py usermanager.py
现在,当我调用
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!
c:\project\internal>python main.py
这是一个用户!
这是一个用户管理器!
我创建了用户:
这是一个模型!
每个人都在和别人说话。希望您可以将其外推到您的用例中!如果没有,Chris Yeh有一篇文章“你可能会觉得有用”



我想了解更多关于如何工作的信息。

Python路径可能有点棘手。我并不认为这是最好的方法,但这是我在午餐时拼凑的。也许它能让你到达你需要去的地方

运行
main.py
时,您处于
internal/
目录中。您需要升级一级,然后访问
user/
目录。
sys.path.append(“../”)
就是这样。模块
usermanager.py
位于
user/
目录中,因此要从
user.py
导入,我们需要指向当前目录。因此,
from.user导入user
中的时间段

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

C:.
├───internal
│       main.py
│       __init__.py
│
└───user
    │   models.py
    │   user.py
    │   usermanager.py
    └───__init__.py
__初始值
\uuuu init\uuuu.py
文件为空。它们的存在向Python表明目录是modules1

main.py models.py user.py usermanager.py
现在,当我调用
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!
c:\project\internal>python main.py
这是一个用户!
这是一个用户管理器!
我创建了用户:
这是一个模型!
每个人都在和别人说话。希望您可以将其外推到您的用例中!如果没有,Chris Yeh有一篇文章“你可能会觉得有用”



我将查看以了解其工作原理。

usermanger.py文件中的缩进是否正确?出于好奇,
usermanager.py
中的def是否在实际代码中没有缩进,您可能只需要在模型和应用程序文件夹中包含u u; init _; py.py文件(必须分隔下划线,因为注释会删除它们)?如果它们应该是
UserManager
的方法,那么它们应该缩进。我怀疑这就是你的问题所在,但它突然向我袭来,所以我想我会问的@LoremIpsum文件中的缩进正确只是我复制/粘贴到StackOverflow的错误usermanger.py文件中的缩进正确吗?出于好奇,你可能只需要在模型和应用文件夹中包含,
usermanager.py
中的def是否在实际代码中没有缩进?如果它们应该是
UserManager
的方法,那么它们应该缩进。我怀疑这就是你的问题所在,但它突然向我袭来,所以我想我会问的@LoremIpsum它们在文件中正确缩进只是我复制/粘贴到的错误stackoverflow@morris我添加了文件夹结构,以便更清楚地回答两个后续问题:您是否在此文件夹中有
\uuu init\uuuu.py
文件(如果有,其内容是什么?),与此文件夹相关的
main.py
在哪里?已在说明中更新。是的,init文件在那里,并且在根目录和子目录中为空level@morris我添加了文件夹结构,以便更清楚地回答两个后续问题:此文件夹中是否有
\uuu init\uuu.py
文件(如果有,其内容是什么?),以及与此文件夹相关的
main.py
在哪里?在说明中更新。是的,init文件存在,并且在根目录和子目录级别为空
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)
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!