Pergunta

Eu li alguns sobre arquivos .egg e os notei em meu diretório lib, mas quais são as vantagens/desvantagens de usá-los como desenvolvedor?

Foi útil?

Solução

De Comunidade do Python Enterprise Application Kit:

"Os ovos estão para os Pythons assim como os Jars estão para o Java..."

Os ovos Python são uma maneira de agrupar informações adicionais com um projeto Python, que permite que as dependências do projeto sejam verificadas e satisfeitas em tempo de execução, além de permitir que os projetos forneçam plugins para outros projetos.Existem vários formatos binários que incorporam ovos, mas o mais comum é o formato ZipFile '.Egg', porque é conveniente para distribuir projetos.Todos os formatos suportam, incluindo dados específicos de pacotes, metadados em todo o projeto, extensões C e código Python.

Os principais benefícios dos ovos Python são:

  • Eles habilitam ferramentas como o gerenciador de pacotes Python "Easy Install"

  • Os arquivos .egg são um formato "Zero Instalação" para um pacote python;Nenhuma etapa de compilação ou instalação é necessária, basta colocá -los no PythonPath ou Sys.Path e usá -los (pode exigir o tempo de execução instalado se as extensões C ou arquivos de dados forem usadas)

  • Eles podem incluir metadados de pacotes, como os outros ovos dos quais dependem

  • Eles permitem que "pacotes de namespace" (pacotes que apenas contêm outros pacotes) sejam divididos em distribuições separadas (por exemplo,zopo., torcido., pico.* Os pacotes podem ser distribuídos como ovos separados, diferentemente dos pacotes normais que devem sempre ser colocados no mesmo diretório pai.Isso permite que agora os enormes pacotes monolíticos sejam distribuídos como componentes separados.)

  • Eles permitem que aplicativos ou bibliotecas especifiquem a versão necessária de uma biblioteca, para que você possa, por exemplo,requer ("Twisted-Internet> = 2.0") antes de fazer uma importação twisted.internet.

  • Eles são um ótimo formato para distribuir extensões ou plugins para aplicações e estruturas extensíveis (como o Trac, que usa ovos para plugins a partir de 0,9b1), porque o tempo de execução do ovo fornece APIs simples para localizar ovos e encontrar seus pontos de entrada anunciados (similares ao conceito de "ponto de extensão" do Eclipse).

  • Também existem outros benefícios que podem vir de um formato padronizado, semelhante aos benefícios do formato "jar" de Java.

-Adão

Outras dicas

Um ovo por si só não é melhor do que uma liberação adequada na fonte.A parte boa é o tratamento de dependências.Assim como os pacotes debian ou rpm, você pode dizer que depende de outros ovos e eles serão instalados automaticamente (através de pypi.python.org).

Um segundo comentário:o formato egg em si é um formato binário empacotado.Pacotes python normais que consistem apenas em código python são melhor distribuídos como "versões de origem", portanto "python setup.py sdist" que resulta em um .tar.gz.Eles também são comumente chamados de "ovos" quando carregados no pypi.

Onde você precisa de ovos binários:quando você está agrupando alguma extensão de código C.Você precisará de vários ovos binários (um unix de 32 bits, um windows, etc.).

Os ovos são uma boa maneira de distribuir aplicativos Python.Pense nisso como um arquivo .deb independente de plataforma que instalará todas as dependências e outros enfeites.A vantagem é que é fácil de usar para o usuário final.A desvantagem é que pode ser complicado empacotar seu aplicativo como um arquivo .egg.

Você também deve oferecer um meio alternativo de instalação além de .eggs.Existem algumas pessoas que não gostam de usar ovos porque não gostam da ideia de um programa de software instalar qualquer software que desejar.Geralmente tendem a ser do tipo sysadmin.

Os arquivos .egg são basicamente uma ótima maneira de implantar seu aplicativo python.Você pode pensar nisso como algo parecido com arquivos .jar para Java.

Mais informações aqui.

Faça o que fizer, não pare de distribuir seu aplicativo, também, como um tarball, pois esse é o formato mais fácil de empacotar para sistemas operacionais com um sistema de pacotes.

Para programas Python simples, você provavelmente não precisará usar ovos.Distribuir os arquivos .py brutos deve ser suficiente;é como distribuir arquivos fonte para GNU/Linux.Você também pode usar vários "empacotadores" de sistema operacional (como py2exe ou py2app) para criar .exe, .dmg ou outros arquivos para diferentes sistemas operacionais.

Programas mais complexos, por ex.Django praticamente requer ovos devido aos vários módulos e dependências necessários.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top