I installed Django with this command:
sudo apt-get install python-django
And it installed version 1.5.4-1ubuntu1. The Django docs say that as of version 1.5, Django supports Python 3. Yet when I run the python 3 interpreter and try importing Django, it says there's no such module. I tried looking for a python3 version of Django, but no such package exists. How can I get django working on python3? I'd prefer to use ubuntu packages instead of installing things manually.
I would strongly suggest avoiding
pip3
to install things in the system site-packages. I've made these arguments before but I'll give you the notes:I would strongly advocate using
virtualenv
. It's a massive pain in the wherever to get going but once you've got it set up you have a complete Python environment under your complete control. This does mean more work (you'll have to check things for updates andpip
doesn't really help there yet) but you don't have to worry about what Ubuntu's doing.I have an environment for each site (just sitting in a subdirectory called
venv
). Some people —including me, once upon a time— prefer to share their environments between multiple sites. I found this easier to maintain in terms of issuing updates but some sites can be fragile or require old versions and that holds the whole environment back. YMMV.In terms of installing this, and just to slap me in the face,
virtualenv
isn't packaged for Python 3 yet so we have to usepip3
:Your bash PS1 should now be preneded with
(myenv)
to let you know you're in a different environment. We can test the environment to check we're on the right versions of things (not using the system versions for starters):And then you can just carry on as if you were master of the universe. You don't need root to use
pip
anymore and you don't need to specifypip3
. It's just a lot more friendly.If you're using something like
uwsgi
to host this (you should) use its -H flag (or home config argument) to tell it where the Python environment lives.As for making development easier, you can automatically "mount" your
virtualenv
environment. There are many scripts out there but this one is mine (this lives at the bottom of my~/.bashrc
:Whenever I
cd
into/web
(where all my development websites are stored), it mounts the virtualenv for me. Note that I only have one environment for all my sites so this will only suite you if you do something similar. There are many other ways of doing similar things.I figured out how to do this with
pip
. Turns out I neededpip3
:did the trick.
You might need to get pip3 by:
Django for Python3 has now been added recently. So simply type in a terminal:
apt-get install python3-django
Guys there is an easy way using virtualenvwrapper, by far the most easiest to manage Python 2.7/3.x virtual environments in Ubuntu/Debian.
Optionally enable
--system-site-packages
to reuse global site packages.virtualenv installs pip and other python setup tools to help us get started quickly.