ArthurWangzt
盖世小蜗牛�
2020-12-10 16:32
采纳率: 100%
浏览 31
已结题

uwsgi + django部署,启动后数据模型异常

  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "./serv_api/controller/core_user/urls.py", line 3, in <module>
    from . import views
  File "./serv_api/controller/core_user/views.py", line 7, in <module>
    from core_user.services import accountservice
  File "./core_user/services/accountservice.py", line 3, in <module>
    from core_user.models import User
  File "./core_user/models.py", line 5, in <module>
    class User(models.Model):
  File "/usr/local/python36/lib/python3.6/site-packages/django/db/models/base.py", line 116, in __new__
    "INSTALLED_APPS." % (module, name)
RuntimeError: Model class core_user.models.User doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
 

单独启动django访问正常。使用uwsgi启动,就报这个错。没辙了

 

  • 点赞
  • 收藏

11条回答 默认 最新

  • weixin_43178103
    the file is not 2020-12-11 10:11
    已采纳

    就是uwsgi代理找不到你model的路径,看看你的配置setting.py里的app配置那块,还有就是你导入model的绝对路径问题

     

    点赞 评论
  • qq_43656607
    放风喽 2020-12-10 18:32

    INSTALLED_APPS里面添加你创建的APP了吗

    点赞 评论
  • weixin_43178103
    the file is not 2020-12-11 09:57

    可能是你uwsgi启动导入路径问题,看看你uwsgi配置关于models,或者项目根路径是不是有问题

    点赞 评论
  • ArthurWangzt
    盖世小蜗牛� 2020-12-11 10:03

    把model中的User删掉,访问就正常了。我就不知道这个model有什么问题,另一个app的两个model就没问题。

    点赞 评论
  • ArthurWangzt
    盖世小蜗牛� 2020-12-11 10:07

    我django的版本是3.1.2,uwsgi的版本是2.0.15。

    ini文件配置如下:

    [uwsgi]
    http = 127.0.0.1:8080
    chdir = /home/myproject/MyLove
    module = serv_api.wsgi:application
    pythonpath = /usr/local/python36/lib/python3.6/site-packages
    virtualenv = /usr/local/python36
    env = DJANGO_SETTINGS_MODULE=serv_api.settings
    processes = 2
    threads = 4
    master = true
    vacuum = true
     

    点赞 评论
  • weixin_43178103
    the file is not 2020-12-11 10:13

    能看看wsgi文件?

    点赞 评论
  • weixin_43178103
    the file is not 2020-12-11 10:17

    你看看 你导入的user模块是不是用   from models import user ,换成 from users.models import user 试试

    点赞 评论
  • ArthurWangzt
    盖世小蜗牛� 2020-12-11 10:17

    感觉上面的env参数没起作用。加载application的时候,找不到配置文件,我又在wsgi里面手动添加的settings.configure()。

    项目目录结构:

    MyLove
       core_photo
       core_user
       serv_api
           controller
               settings
                    __init__.py
                    base.py
               __init__.py
           urls.py
           wsgi.py
        utils
        db.sqlite3
        manage.py
        uwsgi.ini

    点赞 评论
  • weixin_43178103
    the file is not 2020-12-11 10:22
    from django.contrib.auth.models import User
    点赞 评论
  • ArthurWangzt
    盖世小蜗牛� 2020-12-11 14:19

    我把django项目重新搭建了一下,恢复正常的目录结构,uwsgi可以正常运行访问。

    我觉得还是uwsgi没有正确读到我的settings.py。

    之前用env参数指定settings目录,这样是不行么?有没有其他的方式可以指定settings文件的

    env = DJANGO_SETTINGS_MODULE=serv_api.settings

    点赞 评论
  • ArthurWangzt
    盖世小蜗牛� 2020-12-11 15:34

    问题找到了。

    把env参数改了,直接指向我的配置文件就好了。

    env = DJANGO_SETTINGS_MODULE=serv_api.settings.base

     

    感谢您的帮助!!

    点赞 评论

相关推荐