Eu sugeriria fortemente evitar pip3
instalar coisas nos pacotes de sites do sistema. Eu já fiz esses argumentos, mas darei as notas a você:
- As atualizações do sistema quebram tudo
- A instalação de pacotes apt pode substituir coisas instaladas pelo pip
- Conflitos de versão
- As atualizações de distribuição são um caos imprevisível . A sério. Eu perdi cabelo para isso.
Eu defenderia fortemente o uso virtualenv
. É uma dor enorme para onde ir, mas depois de configurá-lo, você terá um ambiente Python completo sob seu controle total. Isso significa mais trabalho (você terá que verificar se há atualizações e pip
ainda não ajuda muito lá), mas não precisa se preocupar com o que o Ubuntu está fazendo.
Eu tenho um ambiente para cada site (apenas sentado em um subdiretório chamado venv
). Algumas pessoas - inclusive eu, uma vez - preferem compartilhar seus ambientes entre vários sites. Achei isso mais fácil de manter em termos de emissão de atualizações, mas alguns sites podem ser frágeis ou exigir versões antigas e que retém todo o ambiente. YMMV.
Em termos de instalação, e apenas para me dar um tapa na cara, virtualenv
ainda não está empacotado para o Python 3, portanto, temos 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!
Agora, o seu PS1 do bash deve ser elogiado (myenv)
para que você saiba que está em um ambiente diferente. Podemos testar o ambiente para verificar se estamos nas versões corretas das coisas (sem usar as versões do sistema para iniciantes):
$ python --version
Python 3.3.2+
$ which python pip
/home/oli/Desktop/myenv/bin/python
/home/oli/Desktop/myenv/bin/pip
E então você pode continuar como se fosse o mestre do universo. Você não precisa pip
mais usar o root e não precisa especificar pip3
. É muito mais amigável.
$ pip install django umemcache
...
Se você estiver usando algo como uwsgi
para hospedar isso (você deve) use seu sinalizador -H (ou argumento de configuração inicial) para informar onde fica o ambiente Python.
Quanto a facilitar o desenvolvimento, você pode "montar" automaticamente seu virtualenv
ambiente. Existem muitos scripts por aí, mas este é meu (isso fica na parte inferior do meu ~/.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 .
Sempre que cd
em /web
(onde todos os meus sites de desenvolvimento são armazenados), ele monta o virtualenv para mim. Observe que eu só tenho um ambiente para todos os meus sites; portanto, isso só será adequado se você fizer algo semelhante. Existem muitas outras maneiras de fazer coisas semelhantes .