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.
6 Réponses :
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:
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
Exécutez votre serveur de développement sans environnement virtuel actif.
Bien sûr, le premier est le moyen préféré. Bonne chance!
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?
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.
Copiez un framework reste _ dans le répertoire principal de votre projet
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.
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.
J'ai eu ce problème. Et j'avais exécuté python -m pip install --upgrade pip pour moi, c'était des œuvres.
J'obtenais une erreur même après l'installation de rest_framework. Puis finalement, cette solution a fonctionné pour moi.
Ê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 installerrest_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.