Qual é a melhor maneira de instalar pacotes Python?

41

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

Por contexto, pretendo 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 posso acompanhar exemplos de código.

Btibert3
fonte

Respostas:

30

Eu acho que a melhor maneira para você seria instalar o sistema de empacotamento 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 pacotes Python, simplesmente como pip install package. No seu caso, seria algo parecido com isto no terminal:

sudo pip install tweeststream
zetah
fonte
3
Isso é bom para pacotes simples, mas não tão bom para numpy pacotes maiores, por exemplo
Hayd
@hayd: por quê? É que relacionadas com askubuntu.com/questions/595366/...
naught101
2
@ naught101 Acho que provavelmente quis dizer scipy, não tenho certeza se está relacionado ... parece que pip está muito atrasado no caminho do python. Eu recomendo fortemente o uso de anaconda / conda, é muito superior ao pip IMO.
Hayd
2
IMHO usando sudo pip <anything>deve ser usado com muito cuidado. Como tweetstreamnão está no Ubuntu Software Center , recomendo usar um virtualenv . tweetstream desetup.py requer anyjsonque é um pacote Ubuntu . Não instalar o tweetstream em um servidor virtualenvpode causar anyjsona falha de outros aplicativos Ubuntu dependentes . Solucionar problemas.
Mark Mikofski # 30/15
9
Para repetir: não use sudo pipno Ubuntu. @ MarkMikofski: você não precisa do virtualenv (a menos que queira por algum motivo específico). python -mpip install --user package-namepode instalar o pacote packafe-namepara o usuário atual. Se houver dependências complexas (grandes extensões C); você pode instalá-los usando apt-get, para evitar a instalação de dependências de compilação, a menos que necessário.
jfs
37

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!

Mark Mikofski
fonte
Eu gostaria de ler isso antes de destruir a distribuição Python do meu sistema por sudopip. Ótimo artigo, obrigado por esta informação.
slhck
pip install numpydeve instalar todas as dependências
Timo
O @Timo, como mencionei na atualização 2017-03-27, desde que o PEP 513 foi implementado por muitos binários numpy do linux, estão disponíveis no PyPI que são criados com o OpenBLAS, ou seja : eles possuem as dependências necessárias. No entanto, como regra, pip install <package>instalará apenas as dependências do pacote Python listadas na install_requiresseção setup.py. Por exemplo: instalar o Jupyter não instalará a biblioteca Haskell pandoc para exportar os blocos de anotações do Jupyter como LaTeX, etc #
Mark Mikofski
Por outro lado, conda install <package>provavelmente instalará todas as dependências, incluindo C / C ++, FORTRAN, etc., mesmo as bibliotecas Haskell, porque o conda não gerencia apenas pacotes Python como o pip, ele gerencia ambientes. Portanto, se você tinha o Anaconda ou o miniconda, conda install Jupyterinstala tudo no arquivo da receitameta.yml , incluindo a biblioteca pandoc Haskell . Para obter mais informações, consulte PyPA
Mark Mikofski
10

Além da adição do Novarchibald, geralmente é uma boa ideia criar um ambiente virtual para o seu projeto python e instalar dependências dentro dele. Isso permite que você tenha um 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

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

deactivate

Você pode descobrir mais sobre o virtualenv aqui .

Voitek Zylinski
fonte
11
Como alternativa: usando o pip do diretório virtualenv bin (aqui my_python_project / bin / pip), você mantém esse ambiente, sem a necessidade de "ativá-lo". Então - usando qualquer um dos scripts instalados na lixeira está usando o dado virutalenv. "ativar" é útil apenas para fazer chamadas para "python", "easy_install" e "pip" usando o bin específico do virtualenv.
Jan Vlcinsky
Os documentos de instalação do Python dizem usar "pyvenv" para criar ambientes virtuais específicos para um projeto; mas esse virtualenv é uma reserva para projetos que usam a versão mais antiga do python, docs.python.org/3/installing/index.html?highlight=pip .
pbhj
2
Note que as virtualenvopções --no-site-packagese --distributeestão obsoletos hoje em dia e não têm efeito por mais tempo.
Forragem
4

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

sudo apt-get install python-pip
Novarchibald
fonte
1

Experimente isto Uma estrutura de GUI para PIP desenvolvida usando PyQt4

Uma estrutura de GUI para PIP desenvolvida usando PyQt4

A tela inicial

insira a descrição da imagem aqui

A tela inicial contém opções para um usuário selecionar o processo que ele deseja executar.

Pode-se também especificar a versão do python em que ele deseja que as operações sejam executadas.

O menu do arquivo tem uma opção para "Sair" (atalho: Ctrl + Q) e "Atualizar listas", que atualiza os arquivos de recursos que contêm dados do pacote.

A tela de instalação

insira a descrição da imagem aqui

A tela de instalação possui uma barra de pesquisa que o usuário pode usar para pesquisar e instalar os pacotes desejados.

A tela de atualização

insira a descrição da imagem aqui

A tela de atualização exibe a lista de pacotes desatualizados e que podem ser atualizados.

O Screem de desinstalação

insira a descrição da imagem aqui

A tela de desinstalação exibe a lista de pacotes que estão instalados no sistema do usuário e podem ser desinstalados.

A janela de progresso

insira a descrição da imagem aqui

A janela de progresso é um widget de terminal interno para PIP-GUI que exibe os processos em execução durante a execução de operações.

gavisic
fonte
11
Bem-vindo ao Ask Ubuntu! Embora isso possa teoricamente responder à pergunta, seria preferível incluir aqui as partes essenciais da resposta e fornecer o link para referência.
Kevin Bowen