1
votes

ModuleNotFoundError: Aucun module nommé 'rest_framework'. Comment puis-je corriger cette erreur?

Je suis nouveau sur Django. J'utilise Ubuntu, Apache et virtualenv. J'utilise Ubuntu sur DigitalOcean. J'essaye d'utiliser Django et React ensemble. J'ai donc téléchargé djangorestframework. Mais lorsque j'exécute le serveur, j'ai rencontré ce problème.

sot232@ubuntu:~/new_app/bin$ source activate
(new_app) sot232@ubuntu:~/new_app/bin$ pip freeze
Django==2.2.1
mysqlclient==1.4.2.post1
pytz==2019.1
sqlparse==0.3.0

J'ai correctement inclus rest_framework dans le fichier settings.py.

(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.

I J'ai essayé ces commandes.

(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

J'ai également essayé d'installer djangorestframework après sudo su .

(J'ai aussi essayé d'autres suggestions. Mais je ne m'en souviens pas.)

De plus, voici ce que j'ai sur un shell python.

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'
>>> 

Voici un dist-packages dans si vous en avez besoin.

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

Comment puis-je résoudre mon problème?

Toute aide sera appréciée. J'ai vu d'autres articles sur StackOverFlow qui semblent similaires aux miens, mais rien ne semblait résoudre mon problème.

(Modifier 1)

Pendant que l'environnement était activé, j'ai essayé de l'exécuter pip install djangorestframework , et j'ai reçu ce message d'erreur.

INSTALLED_APPS = [
    'rest_framework',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'commercial',
]

(Édition 2)

Je lance pip freeze et pip3 freeze . J'ai reçu ce résultat.

(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'

Il semble que rest_framework ne soit pas installé sur mon virtualenv. Cependant, djangorestframework == 3.9.4 est installé globalement.


3 commentaires

Êtes-vous dans le bon virtualenv?


Je suis assez sûr que je suis dans le virtualenv correct.


Avez-vous utilisé sudo lors de la création de virtualenv? On dirait que vous vous êtes basé sur d'autres commentaires, et si vous souhaitez installer rest_framework , vous devrez soit utiliser sudo lorsque vous l'installez, soit de préférence supprimer le virtualenv et le recréer sans utiliser l'utilisateur root.


6 Réponses :


1
votes

Il me semble que vous essayez de l'exécuter avec un environnement virtuel appelé new_app activé alors que Django REST Framework est installé globalement.

Vous devez trouver des moyens pour résoudre ce problème:

  1. Exécutez pip install djangorestframework (et tout autre que vous voulez ou avez besoin) avec l'environnement new_app actif. Notez qu'il n'y a pas de sudo ici

  2. Exécutez votre serveur de développement sans environnement virtuel actif.

Bien sûr, le premier est le moyen préféré. Bonne chance!


1 commentaires

J'ai essayé d'exécuter «pip install djangorestframework». Cela me donne une erreur que je n'ai pas d'autorisation. Dois-je modifier l'autorisation de l'utilisateur?



1
votes

Vous pouvez exécuter pip freeze pour confirmer les bibliothèques que vous avez installées dans votre virtualenv.
Parfois, la bibliothèque n'a pas été installée correctement et elle sera absente de cette liste.


0 commentaires

0
votes

Copiez un framework reste _ dans le répertoire principal de votre projet


2 commentaires

Je ne suis pas sûr de ce que vous vouliez dire.


@JeongKim Il y a peut-être quelque chose qui ne va pas avec votre machine. Vous pouvez copier un dossier rest_framework installé dans votre projet ou dans le chemin du package de python.



2
votes

Tout ce que j'ai essayé a échoué. J'ai simplement créé un autre virtualenv et tout réinstallé. Maintenant, cela fonctionne comme un charme.


0 commentaires

0
votes

J'ai eu ce problème. Et j'avais exécuté python -m pip install --upgrade pip pour moi, c'était des œuvres.


0 commentaires

2
votes

J'obtenais une erreur même après l'installation de rest_framework. Puis finalement, cette solution a fonctionné pour moi.

  1. Ouvrir un projet dans PyCharm IDE
  2. Créer des sérialiseurs.py
  3. Entrez cette ligne - depuis les sérialiseurs d'importation rest_framework
  4. Passez la souris sur la ligne ondulée et PyCharm vous suggérera d'installer rest_framework

0 commentaires