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 venv
agora é 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 conda
de activate
anaconda em todas as plataformas
atualizado: 27-03-2017: PEP 513 - manylinux
biná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 pip
no meu sistema Ubuntu, mas em vez disso usar o Ubuntu Software Center, sináptica , apt-get
ou 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 requests
nã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 numpy
instalar 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á manylinux
biná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 manylinux
rodas 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-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
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 --user
esquema 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 virtualenv
desde a v13.0.0, portanto, se sua versão virtualenv
for 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 -d
para 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á 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, usar os esquemas de instalação --user
ou --home=<wherever-you-want>
Python com o Python distutils
instalará pacotes com o valor de site.USERBASE
ou para onde você quiser. As versões mais recentes do pip também têm uma --user
opçã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-option
que é útil para passar opções personalizadas para alguns setup.py
scripts de alguns pacotes que constroem extensões, como a configuração de PREFIX
. Pode ser necessário extrair a distribuição e usá-la distutils
para instalar o pacote da maneira antiga, digitando python setup install [options]
. A leitura de algumas das documentações de instalação e da distutils
documentação pode ajudar.
O Python é bom o suficiente para adicionar site.USERBASE
à sua PYTHONPATH
frente 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 --home
sistema de instalação, em seguida, pode ser necessário adicioná-lo à PYTHONPATH
variável de ambiente usando export
na sua .bashrc
, .bash_profile
ou 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 ~/.bashrc
ou o ~/.bash_profile
pré-anexa do Anaconda às suas $PATH
recomendações pessoaisconda.sh
no seu, ~/.bashrc
que 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 sudo
usar o Anaconda! Se você já adicionou Anaconda-Python, miniconda ou conda ao seu caminho pessoal, remova a PATH
exportação ~/.bashrc
e atualize para a nova recomendação , para que o sistema Python seja o primeiro novamente.
Isso é um pouco semelhante à --user
opçã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,, conda
por padrão, instala pacotes do Anaconda, mas você pode sinalizar um "canal" diferente usando a -c
opção
Instalar pacotes com conda
apenas como pip
:
$ conda install -c pvlib pvlib # install pvlib pkg from pvlib channel
Mas conda
pode fazer muito mais! Ele também pode criar e gerenciar ambientes virtuais da mesma maneira virtualenv
. Portanto, como o Anaconda cria ambientes virtuais, o pip
gerenciador de pacotes pode ser usado para instalar pacotes do PyPI em um ambiente do Anaconda sem raiz ou sudo
. Você não usar sudo
com Anaconda! Atenção! Tenha cuidado, porém, ao misturar pip
e conda
em um ambiente Anaconda, porque você precisará gerenciar as dependências do pacote com mais cuidado. Outra opção pip
em 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-deps
e 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 conda
també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 seaborn
criará 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 virtualenv
que usa source venv/bin/activate
, mas anterior ao Conda-4.4.0 os conda
comandos eram a mesma como virtualenv
e 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 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!