Je suggérerais fortement d'éviter pip3
d'installer des choses dans les paquets de site système. J'ai déjà présenté ces arguments, mais je vais vous donner les notes suivantes:
- Les mises à jour du système cassent tout
- L'installation de paquets apt peut écraser les choses installées par pip
- Conflits de version
- Les mises à niveau de la distribution sont un chaos imprévisible . Sérieusement. J'ai perdu des cheveux à cause de cela.
Je préconise fortement l'utilisation virtualenv
. C’est une douleur énorme dans l’endroit où aller, mais une fois que vous l’avez configuré, vous avez un environnement Python complet sous votre contrôle complet. Cela signifie plus de travail (vous devrez vérifier les mises à jour et pip
ne vous aide pas vraiment là-bas) mais vous n'avez pas à vous soucier de ce que fait Ubuntu.
J'ai un environnement pour chaque site (juste assis dans un sous-répertoire appelé venv
). Certaines personnes - y compris moi, il était une fois - préfèrent partager leurs environnements entre plusieurs sites. Je trouvais cela plus facile à gérer en termes d’émission de mises à jour, mais certains sites peuvent être fragiles ou nécessiter d’anciennes versions, ce qui empêche tout l’environnement. YMMV.
En termes d’installation, et juste pour me gifler, virtualenv
n’est pas encore packagé pour Python 3, donc nous devons utiliser pip3
:
$ sudo pip3 install virtualenv
...
$ virtualenv-3.3 myenv
Using base prefix '/usr'
New python executable in myenv/bin/python3
Also creating executable in myenv/bin/python
Installing setuptools, pip...done.
$ source myenv/bin/activate # This is important!
Votre bash PS1 devrait maintenant être félicité (myenv)
pour vous faire savoir que vous êtes dans un environnement différent. Nous pouvons tester l'environnement pour vérifier que nous avons les bonnes versions (sans utiliser les versions du système pour commencer):
$ python --version
Python 3.3.2+
$ which python pip
/home/oli/Desktop/myenv/bin/python
/home/oli/Desktop/myenv/bin/pip
Et ensuite, vous pouvez continuer comme si vous étiez le maître de l'univers. Vous n'avez plus besoin de root pour l'utiliser pip
et vous n'avez pas besoin de spécifier pip3
. C'est beaucoup plus convivial.
$ pip install django umemcache
...
Si vous utilisez quelque chose comme uwsgi
pour héberger cela (vous devriez), utilisez son drapeau -H (ou son argument de configuration locale) pour lui dire où se trouve l'environnement Python.
Pour faciliter le développement, vous pouvez automatiquement "monter" votre virtualenv
environnement. Il existe de nombreux scripts mais celui-ci est le mien (il se trouve au bas de mon ~/.bashrc
:
export VENVDIR="/web"
export VENVDIR_VENV="$VENVDIR/venv"
venvcd() {
wd=$(pwd)
[[ $wd == $VENVDIR/* || $wd == $VENVDIR ]] && wasin=true || unset wasin
builtin cd "$@"
wd=$(pwd)
if [[ $wd == $VENVDIR/* || $wd == $VENVDIR ]]; then
source $VENVDIR_VENV/bin/activate
else
[ $wasin ] && deactivate
fi
}
alias cd="venvcd"
cd .
Chaque fois que je suis cd
dans /web
(où tous mes sites de développement sont stockés), il monte la virtualenv pour moi. Notez que je n'ai qu'un seul environnement pour tous mes sites, il ne vous suivra que si vous faites quelque chose de similaire. Il y a beaucoup d'autres façons de faire des choses similaires .