ModuleNotFoundError:没有名为“ rest_framework”的模块。如何解决此错误?

时间:2019-05-15 21:49:57

标签: django reactjs django-rest-framework

我是Django的新手。我正在使用Ubuntu,Apache和virtualenv。我在DigitalOcean上运行Ubuntu。我正在尝试同时使用Django和React。所以我下载了djangorestframework。但是当我运行服务器时,遇到了这个问题。

{
id: 12345,
title: "my trivia game",
players: [
    {
        _id: 9876
        name: "John",
        socketID: "abcdef",
        answers: [1, 3, 4, 5, null, null], // indicates the answer submitted
        score: 10
    }, //etc, etc typically an array of 20 to 50 players
    ],
questions: [] // array of questions and their answers
}

我在settings.py文件中正确包含了rest_framework。

// pseudo-code javascript, for Mongoose schema update
// playerID, questionID, answerValue from socket submission
Game.findById(id, function(err, game) {
    var player = game.players.id(playerID); //find the player in the object
    player.answers[questionID] = answerValue; //track their submission
    game.save();
});

我尝试了这些命令。

(new_app) sot232@ubuntu:/var/www/html/django_app/commercial$ python3 manage.py runserver
Watching for file changes with StatReloader
Exception in thread django-main-thread:
Traceback (most recent call last):
  File "/usr/lib/python3.7/threading.py", line 917, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.7/threading.py", line 865, in run
    self._target(*self._args, **self._kwargs)
  File "/home/sot232/new_app/lib/python3.7/site-packages/django/utils/autoreload.py", line 54, in wrapper
    fn(*args, **kwargs)
  File "/home/sot232/new_app/lib/python3.7/site-packages/django/core/management/commands/runserver.py", line 109, in inner_run
    autoreload.raise_last_exception()
  File "/home/sot232/new_app/lib/python3.7/site-packages/django/utils/autoreload.py", line 77, in raise_last_exception
    raise _exception[0](_exception[1]).with_traceback(_exception[2])
  File "/home/sot232/new_app/lib/python3.7/site-packages/django/utils/autoreload.py", line 54, in wrapper
    fn(*args, **kwargs)
  File "/home/sot232/new_app/lib/python3.7/site-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/home/sot232/new_app/lib/python3.7/site-packages/django/apps/registry.py", line 91, in populate
    app_config = AppConfig.create(entry)
  File "/home/sot232/new_app/lib/python3.7/site-packages/django/apps/config.py", line 90, in create
    module = import_module(entry)
  File "/home/sot232/new_app/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 965, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'rest_framework'

我还尝试在INSTALLED_APPS = [ 'rest_framework', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'commercial', ] 之后安装djangorestframework。

(我也尝试过其他建议。但是我不记得了。)

此外,这是我在python shell上得到的。

sudo pip3 install djangorestframework
sudo pip install djangorestframework
sudo pip install django-rest-swagger
sudo apt-get install python3-setuptools

这里是dist-packages,以备您需要时使用。

sudo su

如何解决我的问题?

任何帮助将不胜感激。我在StackOverFlow上看到了其他帖子,这些帖子似乎与我的相似,但似乎没有任何解决方案。

(编辑1)

激活环境时,我尝试运行Python 3.7.3 (default, Apr 3 2019, 05:39:12) [GCC 8.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import rest_framework Traceback (most recent call last): File "<stdin>", line 1, in <module> ModuleNotFoundError: No module named 'rest_framework' >>> ,但收到此错误消息。

(new_app) sot232@ubuntu:/usr/local/lib/python3.7/dist-packages$ ls
Django-2.2.1.dist-info               pytz-2019.1.dist-info
__pycache__                          rest_framework
corsheaders                          sqlparse
django                               sqlparse-0.3.0.dist-info
django_cors_headers-3.0.0.dist-info  virtualenv-16.5.0.dist-info
djangorestframework-3.9.4.dist-info  virtualenv.py
pytz                                 virtualenv_support

(编辑2)

我运行pip install djangorestframework(new_app) sot232@ubuntu:~/new_app/bin$ pip install djangorestframework Collecting djangorestframework Using cached https://files.pythonhosted.org/packages/1b/fe/fcebec2a98fbd1548da1c12ce8d7f634a02a9cce350833fa227a625ec624/djangorestframework-3.9.4-py2.py3-none-any.whl Installing collected packages: djangorestframework ERROR: Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: '/home/sot232/new_app/lib/python3.7/site-packages/djangorestframework-3.9.4.dist-info' Consider using the `--user` option or check the permissions. 。我收到了这个结果。

pip freeze

好像我的virtualenv上没有安装rest_framework。但是,pip3 freeze已全局安装。

6 个答案:

答案 0 :(得分:1)

在我看来,您正在尝试在全局安装Django REST Framework的同时激活名为j++的虚拟环境来运行它。

您必须设法解决此问题:

  1. new_app环境处于活动状态的情况下运行pip install djangorestframework(以及您想要或需要的其他任何程序)。 请注意,此处没有sudo

  2. 在未激活虚拟环境的情况下运行开发服务器。

当然,首选方法是第一。祝你好运!

答案 1 :(得分:1)

您可以运行pip freeze来确认您在virtualenv中安装了哪些库。
有时该库未正确安装,并且在该列表中将丢失。

答案 2 :(得分:1)

即使安装了rest_framework,我也遇到了错误。最后,这个解决方案对我有用。

  1. 在PyCharm IDE中打开项目
  2. 创建serializers.py
  3. 输入此行-从rest_framework导入序列化器
  4. 将鼠标悬停在弯曲的线条上,PyCharm会建议您安装rest_framework

答案 3 :(得分:0)

将rest _框架复制到您的项目主目录中

答案 4 :(得分:0)

我尝试过的一切都失败了。我只是创建了另一个virtualenv并重新安装了所有内容。现在,它就像一种魅力一样工作。

答案 5 :(得分:0)

我遇到了这个问题。 我已经运行了python -m pip install --upgrade pip 对我来说是工作。