LEIA ESTE PRIMEIRO https://packaging.python.org/en/latest/current.html
Recomendações de ferramentas de instalação
- Use pip para instalar pacotes Python do PyPI.
- Use virtualenv ou pyvenv para isolar dependências específicas do aplicativo de uma instalação compartilhada do Python.
- Use pip wheel para criar um cache de distribuições de wheel, com o objetivo de> acelerar as instalações subsequentes.
- Se você estiver procurando por gerenciamento de pilhas de software de plataforma cruzada totalmente integradas, considere buildout (focado principalmente na comunidade de desenvolvimento da web) ou Hashdist, ou conda (ambos focados principalmente na comunidade científica).
Recomendações de ferramentas de embalagem
- Use setuptools para definir projetos e criar distribuições de origem.
- Use a extensão bdist_wheel setuptools disponível no projeto de roda para criar rodas. Isso é especialmente benéfico se o seu projeto contiver extensões binárias.
- Use barbante para enviar distribuições para PyPI.
Este anwser envelheceu e, de fato, existe um plano de resgate para o mundo do empacotamento python chamado
caminho das rodas
I qoute pythonwheels.com aqui:
O que são rodas?
Rodas são o novo padrão de distribuição python e têm como objetivo substituir os ovos. O suporte é oferecido em pip> = 1.4 e setuptools> = 0.8.
Vantagens das rodas
- Instalação mais rápida para python puro e pacotes de extensão C nativos.
- Evita a execução arbitrária de código para instalação. (Evita setup.py)
- A instalação de uma extensão C não requer um compilador no Windows ou OS X.
- Permite um melhor armazenamento em cache para teste e integração contínua.
- Cria arquivos .pyc como parte da instalação para garantir que eles correspondam ao interpretador Python usado.
- Instalações mais consistentes em plataformas e máquinas.
A história completa do empacotamento correto do python (e sobre rodas) é abordada em packaging.python.org
Conda Way
Para computação científica (isso também é recomendado em packaging.python.org, veja acima), eu consideraria usar o pacote CONDA, que pode ser visto como um serviço de terceiros criado com base nas ferramentas PyPI e pip. Ele também funciona muito bem na configuração de sua própria versão do binstar, então eu imagino que ele pode fazer o truque para um gerenciamento sofisticado de pacotes corporativos personalizados.
O Conda pode ser instalado em uma pasta de usuário (sem permissão de superusuário) e funciona como mágica com
conda instalar
e uma poderosa expansão de env virtual.
caminho dos ovos
Essa opção estava relacionada a python-distribute.org e está amplamente desatualizada (assim como o site), portanto, deixe-me indicar um dos exemplos de setup.py prontos para uso, mas compactos, de que gosto:
- Um exemplo / implementação muito prático de misturar scripts e arquivos Python únicos em setup.py é dado aqui
- Melhor ainda do hyperopt
Esta citação foi retirada do guia sobre o estado de setup.py e ainda se aplica:
- setup.py foi!
- distutils ido!
- distribuir ido!
- pip e virtualenv vieram para ficar!
- ovos ... sumiram!
Eu adiciono mais um ponto (de mim)
Eu recomendaria obter alguma compreensão do ecossistema de empacotamento (a partir do guia apontado por gotgenes) antes de tentar copiar e colar sem pensar.
A maioria dos exemplos na Internet começa com
from distutils.core import setup
mas isso, por exemplo, não suporta a construção de um egg python setup.py bdist_egg (bem como alguns outros recursos antigos ), que estavam disponíveis em
from setuptools import setup
E a razão é que eles estão obsoletos .
Agora de acordo com o guia
Atenção
Use o pacote Distribute em vez do pacote Setuptools porque há problemas neste pacote que podem e não serão corrigidos.
Ferramentas de instalação obsoletas devem ser substituídas por distutils2 , que "fará parte da biblioteca padrão no Python 3.3". Devo dizer que gostei de ferramentas de instalação e de ovos e ainda não fui completamente convencido pela conveniência de distutils2. Isso requer
pip install Distutils2
e instalar
python -m distutils2.run install
PS
O empacotamento nunca foi trivial (aprende-se isso tentando desenvolver um novo), então presumo que muitas coisas aconteceram por motivo. Eu só espero que desta vez vai ser é feito corretamente.