updated: 2019-05-11: Esta publicação menciona principalmente virtualenv, mas de acordo com o documento do Python sobre instalação de módulos , desde o Python 3.5 "o uso de venvagora é recomendado para criar ambientes virtuais", enquanto virtualenvé uma alternativa para versões do Python anteriores à 3.4 .
Atualização: 2018/08/17: desde Conda-4.4.0 uso condade activateanaconda em todas as plataformas
atualizado: 27-03-2017: PEP 513 - manylinuxbinários para PyPI
atualizado: 19/08/2016: Opção Continuum Anaconda
Isso é uma duplicata do easy_install / pip ou apt-get .
Para pacotes globais de Python, use o Ubuntu Software Center, apt, apt-get ou synaptic
O Ubuntu usa o Python para muitas funções importantes, portanto, interferir no Python pode corromper o seu sistema operacional. Esta é a principal razão pela qual eu nunca uso pipno meu sistema Ubuntu, mas em vez disso usar o Ubuntu Software Center, sináptica , apt-getou o mais recente apenas apt, que todos por padrão instalar pacotes a partir do repositório do Ubuntu . Esses pacotes são testados, geralmente pré-compilados para serem instalados mais rapidamente e, finalmente, projetados para o Ubuntu. Além disso, todas as dependências necessárias também são instaladas e um log de instalações é mantido para que elas possam ser revertidas. Eu acho que a maioria dos pacotes tem repositórios correspondentes do Launchpad para que você possa arquivar problemas.
Outro motivo para usar os pacotes do Ubuntu é que, às vezes, esses pacotes Python têm nomes diferentes, dependendo de onde você os baixou. Python-chardet é um exemplo de pacote que foi nomeado uma coisa no PyPI e outra no repositório Ubuntu. Portanto, fazer algo como pip install requestsnão perceberá que o chardet já está instalado no seu sistema porque a versão do Ubuntu tem um nome diferente e, consequentemente, instala uma nova versão que corrompe o sistema de uma maneira insignificante menor, mas ainda por que você faria isso.
Em geral, você deseja instalar apenas um código confiável no seu sistema operacional. Então você deve estar nervoso sobre a digitação $ sudo pip <anything-could-be-very-bad>.
Por fim, algumas coisas são mais fáceis de instalar usando os pacotes do Ubuntu. Por exemplo, se você tentar pip install numpyinstalar o numpy & scipy, a menos que já tenha instalado o gfortran, atlas-dev, blas-dev e lapack-dev, verá um fluxo interminável de erros de compilação. No entanto, a instalação de numpy & scipy através do repositório Ubuntu é tão fácil quanto ...
$ sudo apt-get install python-numpy python-scipy
Você está com sorte, porque está usando o Ubuntu, uma das distribuições mais amplamente suportadas e atualizadas. Provavelmente, todos os pacotes Python que você precisará estão no repositório Ubuntu e provavelmente já estão instalados em sua máquina. E a cada 6 meses, um novo ciclo de pacotes será lançado com a distribuição mais recente do Ubuntu.
Se você está 100% confiante de que o pacote não irá interferir no sistema Ubuntu de nenhuma maneira, você pode instalá-lo usando o pip e o Ubuntu é bom o suficiente para manter esses pacotes separados dos pacotes de distribuição colocando os pacotes de distribuição em uma pasta chamada dist-packages/. O repositório Ubuntu possui pip, virtualenv e setuptools. No entanto, eu apóio a sugestão de Wojciech de usar o virtualenv.
Para projetos pessoais do Python, use pip e wheel em um virtualenv
Se você precisar da versão mais recente ou o módulo não estiver no repositório Ubuntu, inicie um virtualenv e use o pip para instalar o pacote. Embora o pip e o setuptools tenham sido mesclados, o IMO pip é preferido em relação à instalação fácil ou ao distutils, porque sempre espera até que o pacote seja baixado e construído completamente antes de copiá-lo no sistema de arquivos e facilita a atualização ou desinstalação. De muitas maneiras, é semelhante ao apt-get, pois geralmente lida bem com dependências. No entanto, você vai pode ter que lidar com algumas dependências sozinho, mas desde PEP 513 foi adotada agora há manylinuxbinários no Python Package Index (PyPI) para distros populares Linux como Ubuntu e Fedora .por exemplo, como mencionado acima para NumPy e SciPy fazer gfortran certeza que você instalou, atlas-dev, blas-dev e LAPACK-dev do repositório Ubuntu Por exemplo, tanto NumPy e SciPy agora são distribuídos para o Ubuntu como manylinuxrodas por padrão usando OpenBLAS vez do ATLAS. Você ainda pode construí-los a partir da fonte usando as opções de pip --no-use-wheelou--no-binary <format control> .
~$ sudo apt-get install gfortran libblas-dev liblapack-dev libatlas-dev python-virtualenv
~$ mkdir ~/.venvs
~$ virtualenv ~/.venvs/my_py_proj
~$ source ~/.venvs/my_py_proj/bin/activate
~(my_py_proj)$ pip install --no-use-wheel numpy scipy
Consulte a próxima seção, "Você não está presente sudoers", abaixo, para instalar versões atualizadas do pip, setuptools, virtualenv ou wheel no seu perfil pessoal usando o --useresquema de instalação com o pip. Você pode usar isso para atualizar o pip para seu uso pessoal, como JF Sebastian indicou em seu comentário para outra resposta . NOTA: -mé realmente necessário apenas no MS Windows ao atualizar o pip .
python -m pip install --user pip setuptools wheel virtualenv
As versões mais recentes do pip armazenam em cache as rodas automaticamente; portanto, o seguinte é útil apenas para versões mais antigas do pip. Como você pode acabar instalando essas várias vezes, considere usar o wheel com pip para criar uma casa do leme. O wheel já está incluído virtualenvdesde a v13.0.0, portanto, se sua versão virtualenvfor muito antiga, talvez seja necessário instalar o wheel primeiro.
~(my_py_proj)$ pip install wheel # only for virtualenv < v13.0.0
~(my_py_proj)$ pip wheel --no-use-wheel numpy scipy
Isso criará arquivos de roda binários <cwd>/wheelhouse, use -dpara especificar um diretório diferente. Agora, se você iniciar outro virtualenv e precisar dos mesmos pacotes que já construiu, poderá instalá-los na sua casa do leme usandopip install --find-links=<fullpath>/wheelhouse
Leia Instalando módulos Python na documentação do Python e Instalando pacotes na página principal do Python Package Index . Também pip , venv , virtualenv e wheel .
Se você não está sudoerse virtualenvnão está instalado.
Outra opção para usar um ambiente virtual, ou se você estiver usando um compartilhamento Linux sem privilégios de root, usar os esquemas de instalação --userou --home=<wherever-you-want>Python com o Python distutilsinstalará pacotes com o valor de site.USERBASEou para onde você quiser. As versões mais recentes do pip também têm uma --useropção. Não use sudo!
pip install --user virtualenv
Se a sua versão Linux do pip for muito antiga, você poderá passar as opções de configuração usando o --install-optionque é útil para passar opções personalizadas para alguns setup.pyscripts de alguns pacotes que constroem extensões, como a configuração de PREFIX. Pode ser necessário extrair a distribuição e usá-la distutilspara instalar o pacote da maneira antiga, digitando python setup install [options]. A leitura de algumas das documentações de instalação e da distutilsdocumentação pode ajudar.
O Python é bom o suficiente para adicionar site.USERBASEà sua PYTHONPATHfrente de qualquer outra coisa, portanto as alterações afetarão apenas você. Um local popular para --homeé ~/.local. Veja o guia de instalação do módulo Python para a estrutura exata do arquivo e especificamente onde estão os pacotes do site. Nota : se você usar o --homesistema de instalação, em seguida, pode ser necessário adicioná-lo à PYTHONPATHvariável de ambiente usando exportna sua .bashrc, .bash_profileou em seu shell para seus pacotes localizados para estar disponível em Python.
Use o Continuum Anaconda Python para projetos de matemática, ciências, dados ou pessoais
Se você estiver usando o Python para matemática, ciências ou dados, a IMO é uma boa opção: a Distribuição Anaconda-Python ou a distribuição miniconda mais básica lançada pela Anaconda, Inc. (anteriormente conhecida como Continuum Analytics ) . Embora alguém possa se beneficiar do uso do Anaconda para projetos pessoais, a instalação padrão inclui mais de 500 pacotes de matemática e ciências como NumPy, SciPy, Pandas e Matplotlib , enquanto o miniconda instala apenas o Anaconda-Python e o gerenciador de ambiente conda. O Anaconda é instalado apenas no seu perfil pessoal, ou seja: /home/<user>/ e altera o seu caminho ~/.bashrcou o ~/.bash_profilepré-anexa do Anaconda às suas $PATH recomendações pessoaisconda.shno seu, ~/.bashrcque permite usar o conda activate <env|default is base>anaconda - isso só afeta você - o caminho do sistema permanece inalterado . Portanto, você não precisa de acesso root ou sudousar o Anaconda! Se você já adicionou Anaconda-Python, miniconda ou conda ao seu caminho pessoal, remova a PATHexportação ~/.bashrce atualize para a nova recomendação , para que o sistema Python seja o primeiro novamente.
Isso é um pouco semelhante à --useropção que expliquei na última seção, exceto que se aplica ao Python como um todo e não apenas aos pacotes. Portanto, o Anaconda é completamente separado do Python do sistema , não interfere no Python do sistema e somente você pode usá-lo ou alterá-lo. Como ele instala uma nova versão do Python e todas as suas bibliotecas, você precisará de pelo menos 200 MB de espaço, mas é muito inteligente em cache e gerenciamento de bibliotecas, o que é importante para algumas das coisas legais que você pode fazer com o Anaconda.
O Anaconda organiza uma coleção de binários e bibliotecas Python exigidos pelas dependências em um repositório online (anteriormente chamado de binstar ) e também hospeda pacotes de usuários como "canais" diferentes. O gerenciador de pacotes usado pelo Anaconda,, condapor padrão, instala pacotes do Anaconda, mas você pode sinalizar um "canal" diferente usando a -copção
Instalar pacotes com condaapenas como pip:
$ conda install -c pvlib pvlib # install pvlib pkg from pvlib channel
Mas condapode fazer muito mais! Ele também pode criar e gerenciar ambientes virtuais da mesma maneira virtualenv. Portanto, como o Anaconda cria ambientes virtuais, o pipgerenciador de pacotes pode ser usado para instalar pacotes do PyPI em um ambiente do Anaconda sem raiz ou sudo. Você não usar sudocom Anaconda! Atenção! Tenha cuidado, porém, ao misturar pipe condaem um ambiente Anaconda, porque você precisará gerenciar as dependências do pacote com mais cuidado. Outra opção pipem um ambiente conda é usar o canal conda-forge, mas também é melhor fazer isso em um ambiente conda novo, com o conda-forge como o canal padrão. Como último recurso, se você não conseguir encontrar um pacote em nenhum lugar, exceto no PyPI, considere usar --no-depse instale manualmente as dependências restantes usando conda.
O Anaconda também é semelhante, em alguns aspectos, ao Ruby RVM, se você estiver familiarizado com essa ferramenta. O Anaconda condatambém permite criar ambientes virtuais com diferentes versões do Python . por exemplo : conda create -n py35sci python==3.5.2 numpy scipy matplotlib pandas statsmodels seaborncriará uma pilha científica / de ciência de dados usando Python-3.5 em um novo ambiente chamado py35sci. Você pode alternar ambientes usando conda. Desde Conda-4.4.0, este é agora diferente para virtualenvque usa source venv/bin/activate, mas anterior ao Conda-4.4.0 os condacomandos eram a mesma como virtualenve também utilizado source:
# AFTER conda-4.4
~/Projects/myproj $ conda activate py35sci
# BEFORE conda-4.4
~/Projects/myproj $ source activate py35sci
Mas espere, tem mais! O Anaconda também pode instalar idiomas diferentes, como R, para programação estatística no canal Anacondar . Você pode até configurar seu próprio canal para fazer o upload de distribuições de pacotes criadas para o conda . Como mencionado, o conda-forge mantém compilações automatizadas de muitos dos pacotes no PyPI no canal Anda- da-conda-forge .
Epílogo
Existem muitas opções para manter seus projetos Python no Linux, dependendo de suas necessidades e acesso pessoais. No entanto, se há algo que espero que você tire dessa resposta é que quase nunca precisará usar sudopara instalar pacotes Python . O uso de sudodeve ser um cheiro para você que algo está errado. Você foi avisado.
Boa sorte e feliz codificação!