I’ll shortly be starting a new job, and it’s back to the web development world for me. The last time I was actively working as a web developer, it was mainly in a Ruby on Rails environment. I love Rails and it’s convention over configuration approach. I’m more than happy to go with the design choices made by people much more experienced than I am! My new job seems to be mostly in the Django world. Django is the Python equivalent of Rails - a full web framework “with batteries included”.
Over the last few years I have helped a few people set up Python environments - mostly for data science sort of reasons. It always seems to be a hurdle - different versions of Python and various libraries. There are great tools available to get through it clearly, but inevitably I forget the best practices each time I set up a new machine.
This post is to document for myself how I setup my development environment, so I can easily replicate it again.
In general, I use Ubuntu - usually the most recent version, or sometimes the latest LTS.
I have been using Fish Shell for a few years. Usually the advantages of it outweigh any difficulties of replacing bash for me, but sometimes I find it adds an extra layer of confusion if I am not fully confident of my setup. I’ll be setting up bash for Python development as well as Fish, so can fall back if I get confused.
For text editing I used to use Sublime Text, but recently started using VisualStudio Code. I think I’ll go hole hog on the move to VS Code and include whatever plugins I install here too. On the other hand there’s noting wrong with Sublime, so maybe I’ll also set that up.
This post will be something I update and tweak over time.
Usual things needed to add to a fresh Ubuntu install
sudo apt install git sudo apt install vim sudo apt install curl
sudo apt install fish
Make it default if you like, with:
chsh -s /usr/bin/fish
curl -L https://get.oh-my.fish | fish
Installing Python and Virtual Environments
Ubuntu 18.04 comes with Python3 installed as default, at
sudo pip3 install virtualenvwrapper
vim ~/.bashrc # Add the lines: export WORKON_HOME=$HOME/.virtualenvs export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 export VIRTUALENVWRAPPER_VIRTUALENV_ARGS=' -p /usr/bin/python3 ' export PROJECT_HOME=$HOME/Devel source /usr/local/bin/virtualenvwrapper.sh
Apply the updated
Now virtualenvwrapper is installed and can be used like this:
mkvirtualenv name_for_environment deactivate — Exit out of the current Python virtual environment workon — List available virtual environments workon name_of_environment — Activate the specified Python virtual environment rmvirtualenv name_of_environment — Remove the specified environment.
Virtualenvwrapper doesn’t work with Fish shell, but there is a similar project, VirtualFish.
pip3 install virtualfish
Add the following lines to your
~/.config/fish/config.fish. The first line sets python3 as the default python to make new virtual environments with virtualfish.
set -Ux VIRTUALFISH_DEFAULT_PYTHON python3 eval (python -m virtualfish compat_aliases auto_activation)
Create a new environment with:
vf new name_of_env vf workon name_of_env
Starting a new Django project
First, make a new virtual environment for the project.
vf new djangos_band_aye
The new virtual environment should be activated, but if not just run
vf activate djangos_band_aye.
Install Django in the new virtual environment:
pip install Django
Start a new Django project:
django-admin startproject djangos_band_aye cd djangos_band_aye
Now connect the virtual environment to the project folder, so you don’t have to remember to activate it next time: