This is an old revision of the document!
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 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: # Python virtualenv alias virtualenv2="~/.local/lib/python2.7/bin/virtualenv" > source ~/.bashrc > virtualenv2 --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: # VirtualenvWrapper export WORKON_HOME=$HOME/projects/.virtualenvs export PROJECT_HOME=$HOME/projects/code export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 export PATH=~/.local/lib/python3.4/bin:$PATH source $HOME/.local/lib/python3.4/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