sexta-feira, 1 de dezembro de 2017

Instalando Python 3 no Mac OS High Sierra

No Mac OS X 10.13 High Sierra, a versão de Python que vem embarcada é 2.7.10, instalada no diretório /usr/bin/python. Porém, vem sem o gerenciador de pacotes nativo pip. Por definição, o sistema protege as pastas /System /bin /sbin /usr contra edição, mesmo usando usuário root. A Apple chama isso de SIP - System Integrity Protection. Na verdade, é uma característica interessante do ponto de vista de organização. Eventualmente, você pode desejar usar a versão mais atualizada (e recomendada) de Python, a 3.X (atualmente 3.6.3). Instalar essa versão é extremamente fácil e pode ser feito de duas maneiras:

Instalando Python

1. Primeiro método:

Navegue até python.org/downloads e baixe o pacote de instalação oficial. Clique nele e siga as instruções até o fim. A instalação será feita no diretório /Library/Frameworks/Python.framework. Uma chamada no terminal vai revelar, porém, outro diretório onde está um hard link:
$ which python3
$ /usr/local/bin/python3
Esse método é o mais simples e garantido pelos desenvolvedores oficiais do Python, mas não é o preferido pelos desenvolvedores em geral. Antes, eu também preferia instalar via gerenciadores de pacote, mas ultimamente sempre tenho dado preferência ao instalador oficial quando existe um. No entanto, é preciso avisar, especialmente a quem tem menos experiência, que podem ocorrer erros de dependências se você misturar os métodos (por exemplo, instalar o Python 3 com o instalador oficial e o Python 2 com homebrew, coisa que particularmente faço, mas não recomendo a todo mundo).

2. Segundo método:

Usando o Homebrew é possível fazer instalações seguras e funcionais que ficarão localizadas na pasta /usr/local/bin, eliminando problemas de compatibilidade. Antes de fazer isso, é necessário instalar as ferramentas de desenvolvedor do Xcode (via Apple Store) e o Command Line Tools:
$ xcode-select --install
Depois, é só instalar o Homebrew, se já não estiver no sistema:
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew
  /install/master/install)"
E, antes de instalar o Python, colocar a pasta de destino no $PATH:
$ export PATH=/usr/local/bin:$PATH
Esta linha pode ser acrescentada no ~/.bash_profile para maior comodidade.
$ echo 'export PATH=/usr/local/bin:$PATH' >> ~/.bash_profile
Por fim, para instalar a nova versão do Python:
$ brew install python
Checando a versão e o local:
$ which python3
/usr/local/bin/python3

$ python3 --version
Python 3.6.3

Instalando a versão mais recente do Python 2.X

Usar o Homebrew para instalar outra versão de Python permite que a versão nativa conviva harmoniosamente com a nova. É possível até instalar a versão mais nova do Python 2.X e usá-lo separadamente, sem interferir com as outras. As instruções de Marina Mele são esclarecedoras.

Note que você acaba com 3 versões de Python que podem ser usadas sem interferir uma com a outra!
Python nativo:
$ which python
/usr/bin/python
$ python --version
Python 2.7.10
$ pip install virtualenv
-bash: pip: command not found #pip não está instalado!
Python 2 atualizado:
$ which python2
/usr/local/bin/python2
$ python2 --version
Python 2.7.14
$ which pip2
/usr/local/bin/pip2
Python 3:
$ which python3
/usr/local/bin/python3
$ python3 --version
Python 3.6.3
$ which pip3
/usr/local/bin/pip3
Finalmente, instalar pacotes à vontade será fácil apenas usando o comando pip2 install.

Usando virtualenv com Python 2.X

A melhor forma de instalar dependências específicas no Python 2.X é usando um ambiente virtual, para assegurar separação e organização das diversas instâncias.
Para instalar virtualenv e virtualenvwrapper:
$ pip2 install virtualenv
$ pip2 install virtualenvwrapper
Em seguida, criar uma pasta que vai conter os ambientes virtuais.
$ mkdir ~/.virtualenvs
Abrir ou criar o arquivo ~/.bashrc e colocar:
export WORKON_HOME=~/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
Nota 1: se não existir arquivo .bashrc, deve-se incluir o código seguinte no .bash_profile.
if [ -f ~/.bashrc ]; then
    source ~/.bashrc
fi

Nota 2: é preciso mudar a variável de ambiente que chama o Python instalado pelo Homebrew.
$ vi /usr/local/bin/virtualenvwrapper.sh

# Locate the global Python where virtualenvwrapper is installed.
if [ "${VIRTUALENVWRAPPER_PYTHON:-}" = "" ]
then
    VIRTUALENVWRAPPER_PYTHON="$(command \which python2)"
fi                                                   ^

Por fim, ativar estas mudanças:
$ source ~/.bashrc
Dessa forma, será possível criar um novo ambiente virtual:
$ mkvirtualenv --python=python2 myenviroment
Na pasta ~/.vitualenvs/myenvironment que será criada pelo script. O ambiente será automaticamente ativo. Trocar de ambiente é simples como:
$ workon myenvironment
(myenvironment) $
E, para desativar os ambientes:
(myenvironment) $ deactivate
$
Deletar e listar os ambientes:
$ rmvirtualenv <nome_do_ambiente>
$ lsvirtualenv

Usando ambientes virtuais no Python 3.X

O Python 3 já tem o módulo nativo venv para gerenciar os ambientes virtuais. Logo, é possível usá-lo "direto da caixa" sem necessidade de instalar mais dependências. Para criar um ambiente:
$ python3 -m venv ~/.virtualenvs/myvenv
Dentro do ambiente, o comando python invoca de forma correta a instalação do Python 3.X. Para ativar o ambiente:
$ source ~/.virtualenvs/myvenv/bin/activate
(myvenv) $
Módulos instalados durante o uso de um ambiente virtual python permanecem apenas no ambiente ativo. Para desativar o ambiente:
(myvenv) $ deactivate
$
A versão mais recente do módulo virtualenvwrapper também pode ser usada com o Python 3.X:
$ pip3 install virtualenvwrapper
No entanto, eu nunca tentei instalar este módulo para duas versões diferentes de Python na mesma máquina e estou certo de que isso significa problema. Aconselho a usar o módulo virtualenvwrapper apenas em uma versão do Python. Na minha máquina, eu uso apenas para o Python 2.X

Nenhum comentário:

Postar um comentário

Clique aqui!

2015 A.C. Camargo academic journals acesso aberto adverse drug reactions alergia alquilantes alto custo ambiente ambientes virtuais analgésicos anomalias vasculares anti-eméticos anti-helmínticos anti-histamínico antianêmicos antiangiogênico anticâncer anticoagulantes antifúngicos antiprotozoários antivirais artemisinina arXiv asma asthma atopia atualização aula aulas auto-arquivamento avastin avermectina bevacizumab biologicals bioRxiv Blogger brain tumor bundler cancer cancerologia pediátrica Carlos Chagas carne vermelha cauterização Ceará CERN child chronic fatigue syndrome ciência ciência brasileira ciências biológicas e da saúde cientistas influentes cirurgia CLI Command Line Tools conselho internacional crime virtual CT scans Curtis Harris darbopoietina dermatite desenvolvedor diabetes dieta disautonomia dislipidemias doença renal doenças cardíacas doenças parasitárias dor DPOC eczema editoras predatórias efeitos adversos eficácia ensino e pesquisa eritropoietina erlotinib ESA escleroterapia estatinas esteróides estilo de vida exercícios F1000Research farmacogenética farmacologia fatores de crescimento fibromialgia Figshare Fisiologia e Medicina fitness flu FMJ Fortaleza fosfoetanolamina fraude acadêmica fraude eletrônica genetics GitHub glioblastoma gliomas Google Books Google mapas gordos green way Harald zur Hausen hemangiomas hemophagocytic lymphohistiocytosis High Sierra homebrew horário imagem immunology imunossupressores imunoterapia infecção urinária inibidores de ECA inibidores tirosina-quinase iniciação científica insulina irracionalismo ivermectina Jeffrey Beall Jekyll journal hijack Lectures lepra leucemia leukemia linfangiomas Mac OS Mac OS X macrophage activation syndrome magrinhas mal-formações March for Science Marcha pela Ciência medicina personalizada meta-análise Milton Santos modelos monoclonais monoclonal antibody mortalidade morte mudança Mulliken neuro-oncologia neuroblastoma neurology ngram viewer Nobel Nobel em Medicina ou Fisiologia novas drogas novos tratamentos obesidade ômega 3 open access open science OpenAIRE osteoporose Osvaldo Cruz package installer pediatria pediatric cancer pediatric tumors pediatrics peer review PeerJ personalized medicine PET/CT pharmacogenetics pharmacological treatment pharmacology plágio política de C&T posters postprints predatory publishers Preprints pressão arterial prevenção progressista projeto de pesquisa propranolol próstata publicação publicação científica publicações publication pubmed Python python 2 python 3 quimioterapia radiation radioterapia rapamycin rbenv recidiva regressão espontânea Regulação médica repository resposta resultados retrospectiva revisão por pares risco Ruby Satoshi Ömura Scholarly Open Access science ScienceNOW seguimento selênio self-archiving sequestro de periódico científico serotonina SIDA sildenafil slides sobrevida sulfa suplementos survival tacerva targeted therapy temozolamida temozolomide terapia alternativa tireóide tratamento tuberculose tumores cerebrais tumores pediátricos vaccine vacina venv via dourada via verde virtualenv virtualenvwrapper vitamina E vitaminas William C. Campbell Xcode Youyou Tu Zenodo

Postagens populares