Sugeriría encarecidamente evitar pip3
instalar cosas en los paquetes de sitio del sistema. He hecho estos argumentos antes pero te daré las notas:
- Las actualizaciones del sistema rompen todo
- Instalar paquetes apt puede sobrescribir cosas instaladas en pip
- Conflictos de versión
- Las actualizaciones de distribución son un caos impredecible . Seriamente. He perdido el pelo a estos.
Yo recomendaría firmemente el uso virtualenv
. Es un dolor enorme en donde quiera que vaya, pero una vez que lo tiene configurado, tiene un entorno completo de Python bajo su control total. Esto significa más trabajo (tendrás que buscar cosas para ver si hay actualizaciones y pip
todavía no ayuda allí), pero no tienes que preocuparte por lo que está haciendo Ubuntu.
Tengo un entorno para cada sitio (solo sentado en un subdirectorio llamado venv
). Algunas personas, incluido yo, una vez, prefieren compartir sus entornos entre múltiples sitios. Encontré esto más fácil de mantener en términos de emisión de actualizaciones, pero algunos sitios pueden ser frágiles o requerir versiones antiguas y eso frena todo el entorno. YMMV.
En términos de instalación, y solo para abofetearme, virtualenv
todavía no está empaquetado para Python 3, así que tenemos que usar 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!
Tu bash PS1 ahora debería estar preparada (myenv)
para hacerte saber que estás en un entorno diferente. Podemos probar el entorno para verificar que estamos en las versiones correctas de las cosas (no estamos usando las versiones del sistema para empezar):
$ python --version
Python 3.3.2+
$ which python pip
/home/oli/Desktop/myenv/bin/python
/home/oli/Desktop/myenv/bin/pip
Y luego puedes continuar como si fueras el maestro del universo. Ya no necesita root para usar pip
y no necesita especificar pip3
. Es mucho más amigable.
$ pip install django umemcache
...
Si está utilizando algo como uwsgi
alojar esto (debería) usar su bandera -H (o argumento de configuración de inicio) para decirle dónde vive el entorno Python.
En cuanto a facilitar el desarrollo, puede "montar" automáticamente su virtualenv
entorno. Hay muchos guiones por ahí, pero este es mío (esto vive en la parte inferior de mi ~/.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 .
Cada vez que cd
entro /web
(donde se almacenan todos mis sitios web de desarrollo), me resulta virtualenv. Tenga en cuenta que solo tengo un entorno para todos mis sitios, por lo que esto solo le servirá si hace algo similar. Hay muchas otras formas de hacer cosas similares .