Qual é a melhor maneira de instalar pacotes Python?

34

Qual é a melhor maneira de instalar pacotes Python no Ubuntu 11? Eu sou um recém convertido para o Ubuntu e quero aprender as melhores práticas.

Para o contexto, estou procurando instalar o pacote tweeststream, mas não o vi no meu gerenciador de pacotes Synaptic. Além disso, sou muito novo em programação, mas geralmente consigo acompanhar amostras de código.

    
por Btibert3 13.01.2012 / 01:29

4 respostas

25

Acho que a melhor maneira para você seria instalar o sistema de pacotes Python como "python-pip". Você pode instalá-lo com o Synaptic ou o Ubuntu Software Center.

O Pip permitirá que você instale e desinstale facilmente os pacotes do Python, simplesmente como pip install package . No seu caso, seria algo assim do terminal:

sudo pip install tweeststream
    
por zetah 13.01.2012 / 03:00
30

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!

    
por Mark Mikofski 28.03.2012 / 09:04
9

Além da adição do Novarchibald, geralmente é uma boa idéia criar um ambiente virtual para seu projeto python e instalar dependências nele. Isso permite que você tenha melhor controle sobre as dependências e suas versões. Para configurar um ambiente virtual, digite:

virtualenv --no-site-packages --distribute my_python_project

Em seguida, ative-o com:

cd my_python_project
source bin/activate

Neste ponto, qualquer coisa que você instalar com o pip será mantida dentro deste ambiente virtual. Se você deseja instalar algo globalmente, primeiro saia virtualenv com:

deactivate

Você pode descobrir mais sobre o virtualenv aqui .

    
por Voitek Zylinski 20.01.2012 / 10:59
4

Além da resposta do Zetah'a, o comando para instalar o python-pip do terminal é:

sudo apt-get install python-pip
    
por Novarchibald 20.01.2012 / 09:08

Tags