Qual é a forma oficial “preferida” de instalar pip e virtualenv em todo o sistema?

86

É isso que as pessoas parecem recomendar com mais frequência:

$ sudo apt-get install python-setuptools
$ sudo easy_install pip
$ sudo pip install virtualenv

Ou isto, que obtive em http://www.pip-installer.org/en/latest/installing.html :

$ curl -O https://github.com/pypa/virtualenv/raw/master/virtualenv.py
$ python virtualenv.py my_new_env
$ . my_new_env/bin/activate
(my_new_env)$ pip install ...

Ou algo totalmente diferente?

moedor de café
fonte

Respostas:

93

Se você pode instalar o Python mais recente (2.7.9 e superior), o Pip agora vem com ele. Consulte: https://docs.python.org/2.7//installing/index.html
Caso contrário:
Atualizar (nas notas de lançamento):

A partir da v1.5.1, o pip não requer setuptools antes de executar get-pip.py. Além disso, se setuptools (ou distribuir) ainda não estiver instalado, get-pip.py instalará setuptools para você.

Eu agora executo o regular:

curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | sudo python

Aqui estão as instruções oficiais de instalação: http://pip.readthedocs.org/en/latest/installing.html#install-pip

EDITAR 25-Jul-2013:
URL alterado para instalação de ferramentas de configuração.

EDITAR 10-Fev-2014:
instalação removida do setuptools (obrigado @Ciantic)

EDITAR 26-Jun-2014:
URL atualizado novamente (obrigado @LarsH)

EDITAR 1-Mar-2015:
Pip agora vem com Python

Tal Weiss
fonte
1
Onde / como você instala o setuptools-0.8? Parece que você está apenas buscando ez_setup.pyuma "versão leve" de obter pip. Eu faria o mesmo, mas temo que isso vá quebrar em um futuro próximo e eu fique preso aqui novamente (como sempre faço)
Steven Lu
3
Ah, parece que as instruções dizem para apenas fazer o que você diz aqui, é sancionado. Deixa pra lá então.
Steven Lu
4
Há uma nova (?) wget --no-check-certificate https://raw.github.com/pypa/pip/master/contrib/get-pip.pypython get-pip.py
Maneira
3
Agora, o URL de get-pip.py parece ter mudado para https://bootstrap.pypa.io/get-pip.py. Provavelmente melhor apenas vincular às instruções oficiais.
LarsH
2
PS Obrigado por esta resposta - me ajudou a instalar o pip.
LarsH
21

http://www.pip-installer.org/en/latest/installing.html é realmente a resposta canônica para essa pergunta.

Especificamente, as instruções para todo o sistema são:

$ curl -O http://python-distribute.org/distribute_setup.py
$ python distribute_setup.py
$ curl -O https://raw.github.com/pypa/pip/master/contrib/get-pip.py
$ python get-pip.py

A seção citada na pergunta são as virtualenvinstruções, e não as que abrangem todo o sistema. As easy_installinstruções já existem há mais tempo, mas não é mais necessário fazer isso dessa forma.

Richard Jones
fonte
Editado para esclarecer a diferença entre as instruções do sistema naquela página e as virtualenvinstruções que foram citadas na pergunta.
ncoghlan
1
Atualização: distribuir não funciona mais para pip! Consulte stackoverflow.com/a/17601159/78234
Tal Weiss
1
Observe que as instruções na página vinculada não correspondem mais às instruções aqui. É melhor apenas visitar a página oficial e fazer o que eles dizem (e por que alguém duvidou deles em primeiro lugar ?!)
Neil Traft
A abordagem descrita nesta resposta está desatualizada e parece não funcionar mais.
cel
16

Esta resposta vem de @webology no Twitter:

$ sudo apt-get install python-setuptools
$ sudo easy_install pip
$ sudo pip install --upgrade pip virtualenv virtualenvwrapper

Minhas notas adicionadas:

  • No Mac / Windows (e no Linux, se o repositório apt estiver desatualizado), você substituiria a primeira etapa pelo download de ferramentas de configuração em http://pypi.python.org/pypi/setuptools
  • No Windows, você teria que omitir o virtualenvwrapper da última etapa e instalá-lo manualmente de alguma forma. Não sei se há uma maneira de fazer isso sem Cygwin, mas espero que sim.
moedor de café
fonte
1
Se a condição for que você deseja instalações em todo o sistema de pip e virtualenv, isso é o que geralmente faço. As instruções dos documentos pip que são fornecidas como a segunda alternativa na questão são baseadas na premissa de que estamos evitando instalar qualquer coisa em todo o sistema.
Carl Meyer,
3
Você pode substituir os dois primeiros comandos por $ sudo apt-get install python-pip. Instalar o python-pip também instalará o python-setuptools.
Dennis
4

No Ubuntu 12.04, tive sorte apenas usando o gerenciador de pacotes:

sudo apt-get install python-pip virtualenvwrapper
Jason McVetta
fonte
1
As versões empacotadas estão muito desatualizadas. 12.04 fornece python-pip 1.0-1build1que foi lançado no início de 2011 e virtualenvwrapper 2.11.1-21lançado em janeiro de 2012. A resposta de @Richard Jones fornecerá as últimas novidades.
JCotton
3

Não existe um método preferido - tudo depende de suas necessidades. Freqüentemente, você precisa ter diferentes interpretadores Python no sistema por qualquer motivo. Neste caso, você precisa instalar o material individualmente para cada intérprete. Tirando isso: eu prefiro instalar coisas eu mesmo em vez de depender de coisas pré-embaladas que às vezes causam problemas - mas essa é apenas uma opção possível.

Andreas Jung
fonte
Estou perguntando sobre o método preferido, especificamente porque vou dar essas instruções a uma classe de 20 pessoas e não quero enganá-los.
moedor de café,
3

Na verdade, não existe uma única "resposta" para essa pergunta, mas definitivamente existem alguns conceitos úteis que podem ajudá-lo a tomar uma decisão.

A primeira pergunta que precisa ser respondida em seu caso de uso é "Eu quero usar o sistema Python?" Se você quiser usar o Python distribuído com seu sistema operacional, usar o método apt-get install pode ser adequado. Porém, dependendo do método de distribuição do sistema operacional, você ainda precisa fazer mais algumas perguntas, como "Desejo instalar várias versões deste pacote?" Se a resposta for sim, então provavelmente não é uma boa ideia usar algo como o apt. Dpkg basicamente irá descompactar um arquivo na raiz do sistema de arquivos, portanto, é responsabilidade do mantenedor do pacote certificar-se de que o pacote seja instalado com segurança sob muito poucas suposições. No caso da maioria dos pacotes debian, eu presumiria (alguém pode ficar à vontade para me corrigir aqui) que eles simplesmente descompactam e fornecem um pacote de nível superior.

Por exemplo, digamos que o pacote seja "virtualenv", você acabaria com /usr/lib/python2.x/site-packages/virtualenv. Se você instalá- easy_installlo, obterá algo parecido /usr/lib/python2.x/site-packages/virtualenv.egg-linkque pode apontar para /usr/lib/python2.x/site-packages/virtualenv-1.2-2.x.eggum diretório ou ovo compactado. Pip faz algo semelhante, embora não use ovos e, em vez disso, coloque o pacote de nível superior diretamente no libdiretório.

Posso estar errado nos caminhos, mas a questão é que cada método leva em conta necessidades diferentes. É por isso que ferramentas como o virtualenv são úteis, pois permitem que você faça uma sandbox de suas bibliotecas Python de forma que possa ter qualquer combinação de bibliotecas e versões que você precisa.

Setuptools também permite instalar pacotes como multiversão, o que significa que não há um único mo dule_name.egg-linkcriado. Para importar esses pacotes, você precisa usar pkg_resources e a __import__função.

Voltando à sua pergunta original, se você está feliz com o sistema python e planeja usar o virtualenv e o pip para construir ambientes para diferentes aplicativos, então instalar o virtualenv e / ou pip no nível do sistema usando apt-get parece totalmente apropriado. Uma palavra de cautela, porém, é que se você planeja atualizar suas distribuições Python, isso pode ter um efeito cascata em seu virtualenvs se você vincular de volta aos pacotes de site do sistema.

Devo também mencionar que nenhuma dessas opções é inerentemente melhor do que as outras. Eles simplesmente adotam abordagens diferentes. Usar a versão do sistema é uma excelente maneira de instalar aplicativos Python, mas pode ser uma maneira muito difícil de desenvolver com Python. Ferramentas de instalação e configuração fáceis são muito convenientes em um mundo sem virtualenv, mas se você precisar usar versões diferentes da mesma biblioteca, ela também se tornará um tanto complicada. Pip e virtualenv realmente agem mais como uma máquina virtual. Em vez de ter o cuidado de instalar as coisas lado a lado, você apenas cria um ambiente totalmente novo. A desvantagem aqui é que 30+ virtualenvs depois você pode ter usado um pouco de espaço em disco e bagunçado seu sistema de arquivos.

Como você pode ver, com as muitas opções, é difícil dizer qual método usar, mas com um pouco de investigação em seus casos de uso, você poderá encontrar um método que funcione.

Elarson
fonte
2

Como o virtualenvs contém pip por padrão, quase nunca instalo o pip globalmente. O que eu faço acaba parecendo mais com:

$ sudo apt-get install python-setuptools
$ curl -O http://python-distribute.org/distribute_setup.py
$ sudo python distribute_setup.py
$ sudo easy_install virtualenv

Em seguida, prossigo para a instalação e configuração do virtualenvwrapper ao meu gosto e pronto. também pode valer a pena dar uma olhada no virtualenv-burrito de Jeremy Avnet:

https://github.com/brainsik/virtualenv-burrito

David Gouldin
fonte
Obrigado pela pegadinha. ;)
David Gouldin,
3
Por que você está se preocupando com python-setuptools e depois distribuindo quando pode ir diretamente para distribuir?
lambacck de
@lambacck Você poderia postar o que está descrevendo em uma resposta separada (mesmo que pareça repetitiva)?
moedor de café de
2
Sem mencionar que em qualquer Ubuntu recente (e Debian também? Não tenho certeza) o pacote "python-setuptools" realmente É distribuído, então você também pode pular a etapa de distribuição específica.
Carl Meyer,
@ coffee-grinder distrib é uma ramificação de ferramentas de instalação e, portanto, fornece a mesma funcionalidade (e mais). Não se preocupe em fazer "apt-get install python-setuptools" a menos que o python-setuptools seja distribuído (como Carl indica que pode ser), caso em que pule as etapas 2 e 3.
lambacck
2

@ericholscher diz no Twitter, "Aquele nos documentos oficiais .."

É um ótimo ponto, você deve fazer o que os documentos dizem.

Citado nas instruções oficiais de instalação do pip em http://www.pip-installer.org/en/latest/installing.html :

$ curl -O https://github.com/pypa/virtualenv/raw/master/virtualenv.py
$ python virtualenv.py my_new_env
$ . my_new_env/bin/activate
(my_new_env)$ pip install ...
moedor de café
fonte
✓ Esta é a melhor opção se você não quiser depender de pacotes de distribuição.
Tobu
2

Começando com pacotes de distro, você pode usar:

sudo apt-get install python-virtualenv

que permite criar virtuaisenvs, ou

sudo apt-get install python{,3}-pip

que permite instalar pacotes arbitrários em seu diretório pessoal.

Se você está acostumado com o virtualenv, o primeiro comando fornece tudo o que você precisa (lembre-se, o pip é empacotado e será instalado em qualquer virtualenv que você criar).

Se você deseja apenas instalar pacotes, o segundo comando fornece o que você precisa. Use pip assim:

pip install --user something

e colocar algo como

PATH=~/.local/bin:$PATH

em seu ~/.bashrc.


Se sua distro for antiga e você não quiser usar seus pacotes (exceto o próprio Python, provavelmente), você pode baixar o virtualenv como um tarball ou como um script autônomo:

wget -O ~/bin/virtualenv https://raw.github.com/pypa/virtualenv/master/virtualenv.py
chmod +x ~/bin/virtualenv

Se a sua distro for mais do tipo de ponta, o Python3.3 tem recursos do tipo virtualenv integrados:

python3 -m venv ./venv

Isso é executado muito mais rápido, mas ferramentas de configuração e pip não estão incluídos.

Tobu
fonte
2

Para instalar o pip em um mac (osx), o seguinte forro funcionou muito bem para mim:

sudo easy_install pip
Brad Parks
fonte
2

No Raspbian, nem é preciso mencionar python2.7. Na verdade, esta é a melhor maneira de instalar o pip se a versão do python for inferior a 2.7.9.

curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | sudo python

Obrigado a @ tal-weiss

Hemant Kumar
fonte
1

Eu uso get-pip e virtualenv-burrito para instalar tudo isso. Não tenho certeza se python-setuptools é necessário.

# might be optional. I install as part of my standard ubuntu setup script
sudo apt-get -y install python-setuptools

# install pip (using get-pip.py from pip contrib)
curl -O https://raw.github.com/pypa/pip/develop/contrib/get-pip.py && sudo python get-pip.py

# one-line virtualenv and virtualenvwrapper using virtualenv-burrito
curl -s https://raw.github.com/brainsik/virtualenv-burrito/master/virtualenv-burrito.sh | bash
carl_kibler
fonte
1

No Debian, a melhor maneira de fazer isso seria

sudo apt-get install python-pip

Yehonatan
fonte
1
A versão debian pode ser muito antiga. verifique esta resposta para mais informações: unix.stackexchange.com/a/182467/17425
georgiecasey
0

O primeiro método é bom. O único problema que vejo é que você pode acabar com uma versão antiga do setuptools (se o repositório apt não tiver sido mantido atualizado ..

bradley.ayers
fonte