Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
vms:python:dev [2017/03/31 19:04]
admin [Virtual Environments]
vms:python:dev [2017/05/31 01:48]
admin [Virtual Environments]
Line 25: Line 25:
  
 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: 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) ===
  
 <​Code>​ <​Code>​
Line 31: Line 33:
 pip 1.5.6 from /​usr/​lib/​python2.7/​dist-packages (python 2.7) pip 1.5.6 from /​usr/​lib/​python2.7/​dist-packages (python 2.7)
 </​Code>​ </​Code>​
-We will install ''​virtualenv''​ for Python 2 for the User only. When specifying the User installation,​ Python packages are then accessible at ''​~/​Library/​Python/​2.7/​bin''​. Specifying the User installation doesn'​t automatically add ''​virtualenv''​ to the system path which we will do manually in the next step via an alias. This is what allows Python3 and Python2 to run alongside each other. 
  
 +=== Python 3 + PIP (3) ===
 +
 +<​Code>​
 +> sudo apt-get install python3 python3-dev python3-pip
 +</​Code>​
 +
 +We now have the Python and pip versions available:
 +
 +<​Code>​
 +> 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)
 +</​Code>​
 +
 +Notice that ''​python''​ and ''​python2''​ are the same, this is also true for ''​pip''​ and ''​pip2''​.
 ===== Virtual Environments ===== ===== Virtual Environments =====
 +[[http://​joebergantine.com/​blog/​2015/​apr/​30/​installing-python-2-and-python-3-alongside-each-ot/​]]
  
-Virtual Environments are used to isolate ​project ​python versions and package dependencies.+Virtual Environments are used to isolate python versions and package dependencies ​for each specific project.
  
-As stated before, we'lll install ''​virtualenv''​ for User only in order to allow coexistence of Python2 and Python3:+We'll begin by creating specific users for python: 
 +<​Code:​bash>​ 
 +> adduser py2 
 +... 
 +<​password>​ 
 +... 
 +> adduser py3 
 +... 
 +<​password>​ 
 +... 
 + 
 +# To act as py2: 
 +> su py2  
 +</​Code>​ 
 + 
 +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 ===
  
 <​Code>​ <​Code>​
 > pip install --user virtualenv > pip install --user virtualenv
 +> mv ~/​.local/​bin ~/​.local/​lib/​python2.7/​
 > nano ~/.bashrc > nano ~/.bashrc
 ADD: ADD:
-alias virtualenv2='~/​.local/​bin/​virtualenv'​+# USER INSTALLED BINARIES [virtualenv(wrapper)] 
 +export PATH=$PATH:~/​.local/​bin/​
  
-> source .bashrc +> source ​~/.bashrc 
-virtualenv2 ​--version+virtualenv ​--version
 15.1.0 15.1.0
 </​Code> ​ </​Code> ​
Line 55: Line 100:
 > source env_name/​bin/​activate > source env_name/​bin/​activate
 > cd env_name > cd env_name
 +[> deactivate]
 </​Code>​ </​Code>​
  
Line 62: Line 108:
 > virtualenv2 . > virtualenv2 .
 > source ./​bin/​activate > source ./​bin/​activate
 +[> deactivate]
 </​Code>​ </​Code>​
  
 +=== 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. ​
 +
 +<​Code>​
 +> 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
 +</​Code> ​
 +
 +==== Virtualenvwrapper ====
 +
 +[[https://​virtualenvwrapper.readthedocs.io/​en/​latest/​]]
 +
 +=== Installation & Configuration ===
 +
 +Install virtualenvwrapper for python3 for the user only:
 +<​Code>​
 +> 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) >
 +</​Code>​
 +
 +=== Projects management ===
 +
 +[[http://​wiki.strategicz.com/​vhyper/​doku.php?​id=vms:​python:​django#​using_a_shared_folder_to_host_your_projects]]
 +<​Code>​
 +> VBoxManage setextradata <​VM_NAME>​ VBoxInternal2/​SharedFoldersEnableSymlinksCreate/<​SHARE_NAME>​ 1
 +</​Code>​
 +
 +<​Code>​
 +> 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
 +
 +</​Code>​
 +
 +[[https://​virtualenvwrapper.readthedocs.io/​en/​latest/​projects.html#​project-management]]
 +
 +===== Django =====
  
 +[[http://​wiki.strategicz.com/​vhyper/​doku.php?​id=vms:​python:​django]]