Progresso recente
Março de 2014 : Boas notícias! O Python 3.4 é fornecido com o Pip. Pip é o gerente de pacotes padrão de fato do Python. Você pode instalar um pacote como este:
pip install httpie
Wahey! Este é o melhor recurso de qualquer versão do Python. Torna a riqueza de bibliotecas da comunidade acessível a todos. Os iniciantes não são mais excluídos do uso de bibliotecas da comunidade pela dificuldade proibitiva de configuração.
No entanto , ainda existem várias frustrações excelentes com a experiência de empacotamento do Python. Cumulativamente, eles tornam o Python muito hostil para iniciantes. Além disso, a longa história de negligência (ou seja, não remessa com um gerenciador de pacotes por 14 anos do Python 2.0 ao Python 3.3) prejudicou a comunidade. Eu descrevo os dois abaixo.
Frustrações extraordinárias
É importante entender que, embora usuários experientes possam solucionar essas frustrações, eles são barreiras significativas para pessoas novas no Python. De fato, a dificuldade e a hostilidade geral do usuário provavelmente impedirão muitos deles.
O site do PyPI é contra-útil
Todo idioma com um gerenciador de pacotes possui um repositório oficial (ou quase oficial) para a comunidade fazer o download e publicar pacotes. Python possui o Índice de Pacotes Python, PyPI. https://pypi.python.org/pypi
Vamos comparar suas páginas com as do RubyGems e Npm (o gerenciador de pacotes Node).
- https://rubygems.org/gems/rails Página RubyGems para o pacote
rails
- https://www.npmjs.org/package/express página Npm para o pacote
express
- https://pypi.python.org/pypi/simplejson/ página de PyPI para o pacote
simplejson
Você verá as páginas RubyGems e Npm, ambas com uma descrição de uma linha do pacote e instruções grandes e amigáveis sobre como instalá-lo.
Enquanto isso, ai de qualquer usuário infeliz do Python que navegue ingenuamente para o PyPI. Em https://pypi.python.org/pypi/simplejson/ , eles não encontrarão essas instruções úteis. No entanto, existe um grande link verde 'Download'. Não é razoável segui-lo. Aha, eles clicam! O navegador deles baixa um .tar.gz
arquivo. Muitos usuários do Windows nem conseguem abri-lo, mas, se perseverarem, poderão extraí-lo e, em seguida, executar setup.py
e eventualmente com a ajuda do Google setup.py install
. Alguns vão desistir e reinventar a roda ..
Claro, tudo isso está errado. O mais fácil maneira fácil de instalar um pacote é com um comando Pip. Mas o PyPI nem mencionou Pip. Em vez disso, levou-os a um caminho arcaico e tedioso.
Erro: Não foi possível encontrar vcvarsall.bat
Numpy é uma das bibliotecas mais populares do Python. Tente instalá-lo com o Pip, você recebe esta mensagem de erro enigmática:
Erro: Não foi possível encontrar vcvarsall.bat
Tentando corrigir essa é uma das perguntas mais populares sobre o estouro de pilha: " erro: não foi possível encontrar vcvarsall.bat "
Poucas pessoas conseguem.
Para comparação, na mesma situação, Ruby imprime esta mensagem, que explica o que está acontecendo e como corrigi-lo:
Atualize seu PATH para incluir ferramentas de construção ou faça o download do DevKit em http://rubyinstaller.org/downloads e siga as instruções em http://github.com/oneclick/rubyinstaller/wiki/Development-Kit
Publicar pacotes é difícil
Ruby e Nodejs são fornecidos com gerenciadores de pacotes com todos os recursos, Gem (desde 2007) e Npm (desde 2011), e nutriram comunidades de compartilhamento centradas no GitHub. O Npm facilita a publicação de pacotes , pois já possui pacotes de 64k . RubyGems lista pacotes de 72k . O venerável índice de pacotes Python lista apenas 41k .
História
Seguindo o lema " baterias incluídas ", o Python foi enviado sem um gerenciador de pacotes até 2014.
Até Pip, o padrão de fato era um comando easy_install
. Foi lamentavelmente inadequado. O comando não era para desinstalar pacotes.
Pip foi uma grande melhoria. Tinha a maioria dos recursos da Ruby Gem. Infelizmente, Pip era - até recentemente - ironicamente difícil de instalar. De fato, o problema continua sendo uma das principais perguntas do Python no Stack Overflow: " Como instalo o pip no Windows? "