Python Development Environment
As most of the time, we'll start with our Debian Template VM
Python Versions
Although Python 3 is the current version, many applications and scripts are still depending on Python 2.
Also Python 2 is the standard installed version on Debian 8 Jessie
> python -V Python 2.7.9
To make things clearer one could use the python2
command, to have a look at the available commands:
> ls -la /usr/bin | grep -ie python -rwxr-xr-x 1 root root 1056 Mar 16 2015 dh_python2 lrwxrwxrwx 1 root root 23 Jun 29 2016 pdb2.7 -> ../lib/python2.7/pdb.py lrwxrwxrwx 1 root root 9 Mar 16 2015 python -> python2.7 lrwxrwxrwx 1 root root 9 Mar 16 2015 python2 -> python2.7 -rwxr-xr-x 1 root root 3781768 Jun 29 2016 python2.7 lrwxrwxrwx 1 root root 29 Mar 16 2015 pyversions -> ../share/python/pyversions.py
It seems that, contrary to most other distributions, having Python (2.7) installed on Debian doesn't imply pip
being available, let's install it:
PIP (2)
> sudo apt-get install python-pip python-dev build-essential > pip -V pip 1.5.6 from /usr/lib/python2.7/dist-packages (python 2.7)
Python 3 + PIP (3)
> sudo apt-get install python3 python3-dev python3-pip
We now have the Python and pip versions available:
> python -V Python 2.7.9 > pip -V pip 1.5.6 from /usr/lib/python2.7/dist-packages (python 2.7) > python2 -V Python 2.7.9 > pip2 -V pip 1.5.6 from /usr/lib/python2.7/dist-packages (python 2.7) > python3 -V Python 3.4.2 > pip3 -V pip 1.5.6 from /usr/lib/python3/dist-packages (python 3.4)
Notice that python
and python2
are the same, this is also true for pip
and pip2
.
Virtual Environments
http://joebergantine.com/blog/2015/apr/30/installing-python-2-and-python-3-alongside-each-ot/
Virtual Environments are used to isolate python versions and package dependencies for each specific project.
We'll begin by creating specific users for python:
> adduser py2 ... <password> ... > adduser py3 ... <password> ... # To act as py2: > su py2
We'll install virtualenv
for User only in order to allow coexistence of Python2 and Python3. As the virtualenv binary will bear the same name for 2 & 3, we'll move them on the go:
Virtualenv 2
> pip install --user virtualenv > mv ~/.local/bin ~/.local/lib/python2.7/ > nano ~/.bashrc ADD: # USER INSTALLED BINARIES [virtualenv(wrapper)] export PATH=$PATH:~/.local/bin/ > source ~/.bashrc > virtualenv --version 15.1.0
To create a new directory for a virtualenv, and then activate it:
> virtualenv2 env_name > source env_name/bin/activate > cd env_name [> deactivate]
To do the same in an existing directory, first move to this location and:
> cd /path/to/my/env > virtualenv2 . > source ./bin/activate [> deactivate]
Virtualenv 3
Please note that in the case of virtualenv 15.1.0
, the version seems to be compatible with both Python2 and Python3, so it might not be necessary to duplicate the operation, but we'll go for it anyways.
> pip3 install --user virtualenv > mv ~/.local/bin ~/.local/lib/python3.4/ > nano ~/.bashrc ADD: alias virtualenv3='~/.local/lib/python3.4/bin/virtualenv' > source ~/.bashrc > virtualenv3 --version 15.1.0
Virtualenvwrapper
Installation & Configuration
Install virtualenvwrapper for python3 for the user only:
> pip3 install --user virtualenvwrapper > mv ~/.local/bin/* ~/.local/lib/python3.4/bin/ > rm ~/.local/bin > mkdir -p projects/code > nano .bashrc ADD: # USER INSTALLED BINARIES [virtualenv(wrapper)] export PATH=~/.local/bin:$PATH # VIRTUALENVWRAPPER export WORKON_HOME=$HOME/.virtualenvs export PROJECT_HOME=$HOME[/code] export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python[2|3] export VIRTUALENVWRAPPER_VIRTUALENV=$HOME/.local/bin/virtualenv source $HOME/.local/bin/virtualenvwrapper.sh > source .bashrc virtualenvwrapper.user_scripts creating /home/dev/.virtualenvs/premkproject ... ... virtualenvwrapper.user_scripts creating /home/dev/.virtualenvs/get_env_details > mkvirtualenv temp Using base prefix '/usr' New python executable in /home/dev/.virtualenvs/temp/bin/python3 Also creating executable in /home/dev/.virtualenvs/temp/bin/python Installing setuptools, pip, wheel...done. ... ... (temp) >
Projects management
> VBoxManage setextradata <VM_NAME> VBoxInternal2/SharedFoldersEnableSymlinksCreate/<SHARE_NAME> 1
> nano /etc/fstab # automount shuup project space <SHARE_NAME> /home/dev3/projects vboxsf defaults,uid=1001,gid=1001,dmode=775,fmode=774,umask=002 0 0
https://virtualenvwrapper.readthedocs.io/en/latest/projects.html#project-management