I'm trying to get Gunicorn to use Python3 for a Django app I want to make. I'm using Digital Ocean's Django image to get started. It comes with Django, Gunicorn, and Nginx installed and configured. The default Django project that comes with this image seems to work fine for Python 2.
I've apt-get
'ed these packages.
- python3
- python3-psycopg2
- python3-dev
- python3-pip
In order to try to avoid any problems, I've also done this.
- pip uninstall django
- pip3 install django
I rm -rf
'ed the stock project and created a new one with django-admin.py startproject django_project
. django-admin.py
uses Python 3 (according to the shebang). Later, I use python3 manage.py startapp django_app
to create a new app.
At this point, everything works fine. Just like the default app. Then, in django_app/views.py
I do this and it breaks.
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
# Python 2 and 3 - works fine
# print('PRINTING')
# Python 3 only - crashes
print(1, 2, end=' ')
return HttpResponse("Hello, world! This is my first view.")
The error page says I'm using Python 2.7.6.
Okay, so then I thought I could install Gunicorn through pip for Python 3, so I do this.
- pip uninstall gunicorn
- pip3 install gunicorn
But then I just end up with 502 Bad Gateway. When I do service gunicorn status
, I get gunicorn stop/waiting
. I tried service gunicorn restart
, but it still says gunicorn stop/waiting
.
I did a which gunicorn
and it's installed at /usr/local/bin/gunicorn
. Uhh... I'm not really sure what else I could try. Any help would be greatly appreciated. Thanks.
It seems that there's a package for this called
gunicorn3
(this was tested on ubuntu)sudo apt-get install gunicorn3
then running the following command should work and run gunicorn with python3:
gunicorn3 --log-level debug --bind 0.0.0.0:30443 server:app
I think the best way to do this is go to /usr/local/bin/gunicorn and change first line which is shebang line to #!/usr/bin/python-version
for ex: my gunicorn runs with python3.5 interpretor
I had the same issue on Digital Ocean using the droplet "Ubuntu Django on 14.04".
I realized that the 'gevent' worker type was the problem for me when using Python 3. Even though I checked with
python3 -m pip freeze
that 'gevent' was installed, it did not work. I changed it to 'sync' in /etc/gunicorn.d/gunicorn.py:I restarted gunicorn:
I checked the gunicorn service was running by using
service gunicorn status
, and was able to see the welcome to django page by reaching my droplet's ip address.I hope that works for other people.
my way:
The way I make it happen was to uninstall gunicorn from everywhere:
And then Installing
gunicorn
from source.Now everything's running with no problem.