Professional Documents
Culture Documents
Python
Sabe quando voc est no meio de uma tarefa, e precisa executar um comando rpido para seguir
em frente, mas ele no funciona porque o ambiente de trabalho ficou zoneado?
O efeito prtico que voc perde o fluxo do raciocnio e precisa parar pra resolver o problema que
vai te ajudar a resolver o problema.
Por isso eu sempre busco aprimorar os meus processos pra programar como um chef de cozinha,
tendo as ferramentas certas disponveis na hora certa. Sempre com um comando.
Quando se est comeando, organizar o ambiente de desenvolvimento Python no Unix fcil. Mas
com o tempo pode virar uma bola de neve devido a multiplicidade de verses, interpretadores,
utilitrios e projetos.
preciso configurar o shell para ativar o pyenv quando voc iniciar uma sesso do terminal.
Coloque as linhas abaixo no final do arquivo ~/.bashrc:
export WORKON_HOME=~/.ve
export PROJECT_HOME=~/workspace
eval "$(pyenv init -)"
#pyenv virtualenvwrapper_lazy
O Jupyter suporta vrios kernels. Dessa forma uma mesma instalao do Jupyter pode permitir a
criao de notebooks para Python2, Python3, R, Bash e muitas outras linguagens. Hoje eu quero
configurar apenas o suporte para Python2 e Python3.
Primeiro comeo pelo Python3:
pyenv activate jupyter3
pip install jupyter
python -m ipykernel install --user
pyenv deactivate
Veja que no Python3 eu instalo o Jupyter que por padro j instala o iPython com o Kernel tambm.
J no Python2 eu instalo apenas o iPython com Kernel. Explico melhor isso l embaixo.
Agora vamos instalar as ferramentas globais que suportam Python3:
pyenv activate tools3
pip install youtube-dl gnucash-to-beancount rows
pyenv deactivate
Agora vamos instalar as ferramentas globais que no suportam Python3 ou seja que continuam
no Python2. \_()_/
pyenv activate tools2
pip install rename s3cmd fabric mercurial
pyenv deactivate
Finalmente, este o momento de fazer todas essas verses do Python e virtualenvs especiais
funcionarem cooperativamente:
pyenv global 3.6.0 2.7.13 jupyter3 ipython2 tools3 tools2
O comando acima estabelece a prioridade do PATH para que os scripts sejam acessados na ordem
certa, e sem precisar ficar ativando virtualenv nenhum.
Pra entender o resultado final disso, veja como o shell encontra cada comando:
~$ pyenv which python
/Users/henrique/.pyenv/versions/3.6.0/bin/python
~$ pyenv which python2
/Users/henrique/.pyenv/versions/2.7.13/bin/python2
~$ pyenv which jupyter
/Users/henrique/.pyenv/versions/jupyter3/bin/jupyter
~$ pyenv which ipython
/Users/henrique/.pyenv/versions/jupyter3/bin/ipython
~$ pyenv which ipython2
/Users/henrique/.pyenv/versions/ipython2/bin/ipython2
~$ pyenv which youtube-dl
/Users/henrique/.pyenv/versions/tools3/bin/youtube-dl
~$ pyenv which rename
/Users/henrique/.pyenv/versions/tools2/bin/rename
Com isso, sempre que o iPython for inicializado tanto no modo interativo quanto no modo kernel, o
caminho para o site-packages do virtualenv estar disponvel no PYTHONPATH.
Ento voltando ao nosso proj3, entrando no virtualenv com o comando workon proj3, basta
executar ipython para iniciar o modo interativo, ou jupyter notebook.