Virtualenv, Python et Django

17 octobre 2013 - Mots-clés : Arch Liens Linux Python

Dans cet article, je vous propose de décrire l'installation et l'utilisation de virtualenv avec Python. J'ai en fait réalisé une synthèse des articles proposés dans les liens à la fin de l'article, gardant les bonnes idées et écartant celles qui m'étaient inutiles.

Installation des packages

Pour Python 3 :

# pacman -S python-virtualenv

Pour Python 2 :

# pacman -S python2-virtualenv

et enfin :

# pacman -S python-virtualenvwrapper

Installation de autoenv :

$ git clone git://github.com/kennethreitz/autoenv.git ~/.autoenv

Installation et configuration

$ mkdir ~/.pip_download_cache
$ mkdir ~/virtualenvs

Créez le fichier ~/.bash_virtualenv :

for virtualenv
if ` -f /usr/bin/virtualenvwrapper.sh >`_; then
   export WORKON_HOME=~/virtualenvs
   export PIP_VIRTUALENV_BASE=$WORKON_HOME
   export PIP_RESPECT_VIRTUALENV=true
   export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--distribute'
   export PIP_DOWNLOAD_CACHE=$HOME/.pip_download_cache
   source /usr/bin/virtualenvwrapper.sh
fi

use_env() {
  typeset venv
  venv="$1"
  if `[ "${VIRTUAL_ENV:t}" != "$venv" >`_]; then
    if workon | grep -q "$venv"; then
      workon "$venv"
    else
      echo -n "Create virtualenv $venv now? (Yn) "
      read answer
      if `[ "$answer" == "Y" >`_]; then
        REQS_ARG=""
        PYTHONEXE_ARG=""
        if ` -f requirements.txt >`_; then
          REQS_ARG="-r requirements.txt"
        fi
        if ` `command -v python2` >`_; then
          echo -n "Use python2 instead of python? (Yyn) "
          read answer
          if `[ $answer =~ ^[Yy>`_$ ]]; then
            PYTHONEXE_ARG="--python=`command -v python2`"
          fi
        fi
        mkvirtualenv $REQS_ARG $PYTHONEXE_ARG "$venv"
      fi
    fi
  fi
}

Rendre ~/.bash_virtualenv exécutable :

$ chmod +x ~/.bash_virtualenv

Ajoutez les lignes suivantes dans le fichier ~/.bashrc :

if ` -f ~/.bash_virtualenv >`_ ; then
   source ~/.bash_virtualenv
fi

source ~/.autoenv/activate.sh

Utilisation

Pour créer ou changer de virtualenv :

$ use_env my_env

Pour désactiver la virtualenv en cours :

$ deactivate

Pour lister les virtualenv :

$ lsvirtualenv

Pour supprimer une virtualenv :

$ rmvirtualenv env

Pour rendre automatique le changement de virtuaenv, placez un fichier .env dans le répertoire de votre projet. Par convention, la virtualenv porte le même nom que le répertoire courant :

use_env "${PWD##*/}"

Création d'un projet Django

Comme je souhaite utiliser une version spécifique de Django, je la télécharge :

$ wget https://www.djangoproject.com/download/1.4.8/tarball/
$ mv index.html Django-1.4.8.tar.gz

Il faut résoudre le problème de la poule et de l'oeuf, voici une séquence possible :

$ use_env nom_du_projet_django
$ pip install Django-1.4.8.tar.gz
$ django-admin.py startproject nom_du_projet_django
$ cd nom_du_projet_django
$ echo "use_env \"\${PWD##*/}\"" > .env

Pentominos : jouer en 2D

03 décembre 2009 - Mots-clés : Pentominos Python

Si l'on veut assembler les 12 pièces, il faudra un terrain constitué de 60 carrés. Parmi tous les rectangles possibles, il y en a 4 rectangulaires :

  • 3x20: 2 solutions. Exemple:
  • 4x15: 368 solutions. Exemple:
  • 5x12: 1010 solutions. Exemple:
  • 6x10: 2339 solutions. Exemple:

On peut les assembler dans tout type de …

suite...