atualizado: 2017-03-27: PEP 513 - manylinux
binários para PyPI
atualizado: 2016-08-19: Opção Continua Anaconda
Isto é um pouco uma duplicata de easy_install / pip ou apt-get .
Para pacotes Python globais , use o Centro de Software do Ubuntu, apt, apt-get ou synaptic
O Ubuntu usa o Python para muitas funções importantes, portanto, interferir no Python pode corromper seu sistema operacional. Esta é a principal razão pela qual eu nunca uso o pip
no meu sistema Ubuntu, mas ao invés disso eu uso o Ubuntu Software Center, synaptic , apt-get
, ou o mais novo apenas apt
, que todos, por padrão, instalam pacotes do repositório do Ubuntu . Esses pacotes são testados, geralmente pré-compilados, para que sejam instalados mais rapidamente e 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 possam ser revertidas. Acho que a maioria dos pacotes tem repositórios Launchpad correspondentes para você arquivar problemas.
Outro motivo para usar os pacotes do Ubuntu é que às vezes esses pacotes do Python têm nomes diferentes dependendo de onde você os baixou. O Python-chardet é um exemplo de um pacote que ao mesmo tempo foi nomeado uma coisa no PyPI e outra coisa no repositório do Ubuntu. Portanto, fazer algo como pip install requests
não vai perceber que chardet já está instalado no seu sistema porque a versão do Ubuntu tem um nome diferente e, consequentemente, instalar uma nova versão que irá corromper seu sistema de forma insignificante mas ainda assim por que você faria isso? .
Em geral, você só quer instalar um código confiável em seu sistema operacional. Então, você deve estar nervoso sobre digitar $ 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 numpy
para instalar numpy & amp; scipy a menos que você já tenha instalado gfortran, atlas-dev, blas-dev e lapack-dev, você verá um fluxo interminável de erros de compilação. No entanto, a instalação de numpy & amp; scipy através do repositório do Ubuntu é tão fácil como ...
$ 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 frequentemente atualizadas. O mais provável é que cada pacote do Python que você precisará esteja no repositório do Ubuntu e, provavelmente, já instalado em sua máquina. E a cada 6 meses, um novo ciclo de pacotes será lançado com a mais recente distribuição do Ubuntu.
Se você está 100% confiante de que o pacote não irá interferir com o seu sistema Ubuntu de alguma forma, então você pode instalá-lo usando pip e o Ubuntu é bom o suficiente para manter esses pacotes separados dos pacotes distro colocando os pacotes distro uma pasta chamada dist-packages/
. O repositório do Ubuntu possui pip, virtualenv e setuptools. No entanto, eu sugiro a sugestão de Wojciech para usar virtualenv.
Para projetos pessoais em Python, use pip e wheel em um virtualenv
Se você precisar da versão mais recente, ou se o módulo não estiver no repositório do Ubuntu, inicie um virtualenv e use pip para instalar o pacote. Embora pip e setuptools tenham sido mesclados, o pip do IMO é preferível ao invés de easy-install ou distutils, porque ele sempre esperará até que o pacote seja completamente baixado e construído antes de copiá-lo para o seu sistema de arquivos, tornando a atualização ou desinstalação fácil. De muitas maneiras, é semelhante ao apt-get, em que geralmente lida bem com dependências. No entanto, você irá pode ter que lidar com algumas dependências, mas desde O PEP 513 foi adotado e agora há manylinux
binários no Python Package Index (PyPI) para distribuições Linux populares como Ubuntu e Fedora . por exemplo, como mencionado acima para NumPy e SciPy, certifique-se de ter instalado gfortran, atlas-dev, blas-dev e lapack-dev do repositório do Ubuntu
Por exemplo, ambos NumPy e
SciPy são agora distribuídos para o Ubuntu como
manylinux
wheels
por padrão usando OpenBLAS em vez de ATLAS. Você ainda pode criá-los a partir da fonte usando as
opções de pip --no-use-wheel
ou
--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
Veja a próxima seção, "Você não está em sudoers
", abaixo para instalar versões atualizadas do pip, setuptools, virtualenv ou wheels no seu perfil pessoal usando o esquema de instalação --user
com 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: o -m
é realmente necessário apenas no MS Windows ao atualizar o pip
python -m pip install --user pip setuptools wheel virtualenv
Versões mais recentes do pip armazenam automaticamente as rodas, de modo que o seguinte é útil apenas para versões mais antigas do pip. Como você pode acabar instalando isso muitas vezes, considere usar wheel com pip para criar um wheelhouse. A roda já está incluída em virtualenv
desde a v13.0.0 , portanto, se sua versão de virtualenv
for muito velho, você pode precisar instalar a roda primeiro.
~(my_py_proj)$ pip isntall wheel # only for virtualenv < v13.0.0
~(my_py_proj)$ pip wheel --no-use-wheel numpy scipy
Isso criará arquivos de roda binária em <cwd>/wheelhouse
, use -d
para especificar um diretório diferente. Agora, se você iniciar outro virtualenv e precisar dos mesmos pacotes que você já os construiu, você poderá instalá-los a partir de sua casa do leme usando pip install --find-links=<fullpath>/wheelhouse
Leia Instalando módulos do Python na documentação do Python e Obter Pacotes na página principal do Índice de Pacotes Python. Também pip , virtualenv e roda .
Se você não está em sudoers
e virtualenv
não está instalado.
Outra opção para usar um ambiente virtual, ou se você estiver usando um compartilhamento Linux sem privilégios de root, usando a --user
ou --home=<wherever-you-want>
Os esquemas de instalação do Python com distutils
do Python instalarão pacotes com o valor de site.USERBASE
ou para onde você quiser. As versões mais recentes do pip também têm uma opção --user
. Não use sudo
!
pip install --user virtualenv
Se a versão do pip do Linux for muito antiga, você poderá passar as opções de configuração usando --install-option
que é útil para passar opções personalizadas para alguns scripts setup.py
de alguns pacotes que criam extensões, como a configuração de PREFIX
. Você pode precisar apenas extrair a distribuição e usar distutils
para instalar o pacote da maneira antiga, digitando python setup install [options]
. Lendo algumas das documentação de instalação e o distutils
documentation pode ajudar.
O Python é bom o suficiente para adicionar site.USERBASE
ao seu PYTHONPATH
antes de qualquer outra coisa, então as alterações só afetarão você. Um local popular para --home
é ~/.local
. Consulte o guia de instalação do módulo do Python para obter a estrutura de arquivos exata e especificamente onde estão seus pacotes de site. Observação : se você usar o esquema de instalação --home
, talvez seja necessário adicioná-lo ao PYTHONPATH
usando export
no seu .bashrc
, .bash_profile
ou no seu shell para que seus pacakges localizados estejam disponíveis em Python.
Use Continuum do Anaconda em Python para projetos pessoais
Outra opção relativamente nova que pode estar disponível para você é Anaconda Python by Continuum . O Anaconda só instala em seu perfil pessoal, ie: /home/<user>/
e altera seu ~/.bashrc
ou ~/.bash_profile
para pré-adicionar o caminho do Anaconda ao seu $PATH
- isso só afeta você - o caminho do seu sistema não foi alterado . Portanto você não precisa de acesso root ou sudo
para usar o Anaconda! Você pode reverter esse comportamento removendo a nova exportação de caminho para o Anaconda do seu ~/.bashrc
ou ~/.bash_profile
e, em seguida, seu sistema Python será o primeiro novamente.
Isso é um pouco semelhante à opção --user
que expliquei na última seção, exceto que se aplica ao Python como um todo e não apenas aos pacotes. Portanto o Anaconda está completamente separado do seu sistema Python , ele não irá interferir com o seu sistema Python e somente você poderá 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 sobre o armazenamento em cache e o gerenciamento de bibliotecas, o que é importante para algumas das coisas legais que você pode fazer com o Anaconda.
O Continuum seleciona uma coleção de binários e bibliotecas do Python exigidos por dependências em um repositório on-line chamado Anaconda binstar . O gerenciador de pacotes usado pelo Anaconda, conda
, é usado para instalar pacotes do Anaconda binstar. Mas conda
pode fazer muito mais do que apenas instalar pacotes, mas também pode criar e gerenciar ambientes virtuais como virtualenv
. Portanto, como o Anaconda cria ambientes virtuais, o gerenciador de pacotes pip
pode ser usado para instalar pacotes do PyPI em um ambiente Anaconda sem raiz ou sudo
. Do não use sudo
com o Anaconda!
O Anaconda também é similar em alguns aspectos ao Ruby RVM se você estiver familiarizado com essa ferramenta. O Anaconda conda
também permite criar ambientes virtuais com versões diferentes do Python . EG : conda create -n py35sci python==3.5.2 numpy scipy matplotlib pandas statsmodels seaborn
criará uma pilha de dados científicos / científicos usando o Python-3.5 em um novo ambiente chamado py35sci
. Você pode alternar ambientes semelhantes a virtualenv
, pesquisando o script activate
:
~/Projects/myproj $ source activate py35sci
Mas espere mais! O Anaconda também pode instalar idiomas diferentes, como R para programação estatística do canal r
. Além disso, o Anaconda divide o binstar em diferentes canais , o que evita confrontos de nomes. Você pode até mesmo configurar seu próprio canal para fazer o upload de distribuições de pacotes usando o protocolo de compilação conda. Na verdade, existe um canal chamado conda-forge por conda-forge que mantém compilações automatizadas de muitos dos pacotes no PyPI.
Epílogo
Existem muitas opções para manter seus projetos Python no Linux, dependendo das suas necessidades e acessos pessoais. No entanto, se há uma coisa que eu espero que você tire dessa resposta é que você quase nunca precisa usar sudo
para instalar pacotes Python . O uso de sudo
deve ser um cheiro para você que algo está errado. Você foi avisado.
Boa sorte e feliz codificação!