0
votes

Mon projet Django, UWSGI ne fonctionne pas à cause de Virtual env

Je vais servir mon projet Django avec UWSGI sur le serveur Ubuntu, mais cela ne fonctionne pas.

J'utilise Python 3.6 mais l'UWSGI me montre qu'il est 2.7 p>

J'ai changé de python par défaut sur python3 .6 Mais Uwsgi ne fonctionne toujours pas. P>

Ceci est ma commande: p> xxx pré>

Ceci est Message d'erreur: p>

*** Starting uWSGI 2.0.18 (64bit) on [Tue Jun  4 21:03:58 2019] ***
compiled with version: 5.4.0 20160609 on 04 June 2019 11:39:14
os: Linux-4.4.0-1079-aws #89-Ubuntu SMP Tue Mar 26 15:25:52 UTC 2019
nodename: ip-172-31-18-239
machine: x86_64
clock source: unix
detected number of CPU cores: 2
current working directory: /home/ubuntu/repository/charteredbus
*** running under screen session 1636.sbus ***
detected binary path: /usr/local/bin/uwsgi
!!! no internal routing support, rebuild with pcre support !!!
chdir() to /home/ubuntu/repository/charteredbus
*** WARNING: you are running uWSGI without its master process manager ***
your processes number limit is 15738
your memory page size is 4096 bytes
detected max file descriptor number: 1024
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uWSGI http bound on :8001 fd 4
spawned uWSGI http 1 (pid: 8402)
uwsgi socket 0 bound to TCP address 127.0.0.1:39614 (port auto-assigned) fd 3
Python version: 2.7.12 (default, Nov 12 2018, 14:36:49)  [GCC 5.4.0 20160609]
Set PythonHome to /home/ubuntu/repository/env
ImportError: No module named site


0 commentaires

3 Réponses :


0
votes

Le journal indique qu'il n'y a pas de module nommé site

Importerror: Aucun module nommé site

Je suppose que le site est une application Django. Avez-vous enregistré ceci dans votre installation installée (paramètres.py)

Sinon, vous devrez peut-être enregistrer votre application. (apps.py dans l'application du site)

S'il vous plaît laissez-moi savoir si je vous ai aidé.

Jasper


0 commentaires

1
votes

Malheureusement, UWSGI doit être compilé avec la version Python correspondant à votre virtualenv. Cela signifie: Si UWSGI était compilé avec Python 2.7, vous ne pouvez pas utiliser Python 3.6 dans votre virtualenv (et dans votre application Django).

Heureusement, il existe certaines méthodes pour résoudre ce problème:

  • Installation de UWSGI à l'intérieur de votre virtualenv et en utilisant ce binaire UWSGI pour exécuter Django.
  • en utilisant Python comme plugin à UWSGI.

    premier est assez simple. Tout ce que vous avez à faire est de changer de chemin vers UWSGI binaire dans votre script de démarrage pour pointer vers UWSGI installé dans votre virtualenv. (Si vous commencez UWSGI à l'aide de SystemD, je recommande aux unités utilisateur SystemD. N'oubliez pas d'exécuter LognTlacTlactiver-lattre )

    La seconde n'est pas si compliquée. Vous devez d'abord installer UWSGI sans plug-in Python, puis installez des plug-ins distincts pour toutes les versions de Python dont vous aurez besoin. Plus sur ce que vous pouvez trouver ici . Il existe probablement des plugins prêts dans votre référentiel de packages système si vous utilisez UWSGI à partir de celui-ci.


4 commentaires

J'ai vérifié mon virtualenv, mais UWSGI n'a pas été installé à Virtualenv. J'ai donc ran pip install uwsgi mais une erreur renvoyée.


Avez-vous changé de chemin vers UWSGI binaire? Comment démarrez-vous UWSGI?


UWSGI --HTTP: 8000 --Home / Accueil / Ubuntu / env -CHDir / Accueil / Ubuntu / Project -W Blog.wsgi


Utilisez-vous UWSGI lorsque vous êtes à l'intérieur virtualenv?



0
votes

Pour ceux qui ne peuvent pas (ou n'a pas échoué) Construire un binaire UWSGI indépendant de la langue en suivant la deuxième option mentionnée par @gwynbleidd, vous pouvez également créer un binaire autonome StandalEone Standalone Staché à différents plugins Python, par:

  • Préservation du binaire UWSGI intégré

  • Nettoyer la construction précédente en exécutant Cape Clean dans / chemin / à / uwsgi_source_folder

  • exécutant la commande your_python_version uwsgiconfig.py --build dans / chemin / à / uwsgi_source_folder , par exemple xxx


0 commentaires