Como você organiza módulos Python? [fechadas]
Pergunta
Quando se trata de organizar módulos python, meu sistema Mac OS X é uma bagunça. Eu pacotes em torno de mentir em todos os lugares no meu hdd e nenhum sistema especial para organizá-los.
Como você manter tudo gerenciável?
Solução
Meu conselho:
- Leia Instalando Módulos Python .
- Leia Distributing Python Módulos .
- Iniciar usando easy_install de setuptools . Leia a documentação setuptools.
- Use sempre virtualenv . Meu diretório site-packages contém setuptools e virtualenv única .
- Confira novo projeto de Ian Bicking pyinstall .
- Siga tudo Ian Bicking está trabalhando. É sempre bem.
- Ao criar seus pacotes de possuir, usar distutils / setuptools. Considere o uso de
paster create
(ver http://pythonpaste.org ) para criar o layout do diretório inicial.
Outras dicas
Além de PEP8 e easy_install, você deve verificar se virtualenv. Virtualenv permite que você tenha várias árvores biblioteca Python diferentes. No trabalho, usamos virtualenv com um ambiente de inicialização para configurar rapidamente um ambiente de desenvolvimento / produção onde estamos todos em sincronia w.r.t versões de bibliotecas etc. Nós geralmente coordenar atualizações da biblioteca.
Existem várias famílias de Python componentry.
-
O material que vem com o Python. Este cuida de si mesmo.
-
O material que você tem com easy_install. Isto, também, cuida de si mesmo.
-
Os pacotes que você teve para obter alguma outra maneira, seja como tarballs ou checkouts do SVN. Crie uma pasta
Components
. Coloque os downloads ou o SVN está lá em primeiro lugar. A cada momento. Fazer instalações de lá. -
Os pacotes que você escreveu que são reutilizáveis. Eu tenho uma pasta
Projects
com cada projeto nessa pasta. Se o projeto é uma coisa altamente reutilizáveis, tem umasetup.py
e eu realmente executar a instalação como se eu o download do mesmo. Eu não tenho muitos deles, mas alguns. Alguns deles podem se tornar projetos de código aberto. -
As aplicações finais que você escreve. Eu tenho uma pasta no
Projects
com cada um desses aplicativos de nível superior. Estes são geralmente grandes, divagar coisas (como sites Django) e não têmsetup.py
. Por quê? Eles são muitas vezes bastante complexo, com apenas algumas instalações de servidores para gerenciar, e cada uma dessas instalações de servidor é único. Estes geralmente dependem dePYTHONPATH
para identificar suas partes.
Observe o tema comum. Ou eles estão Componentes você baixou ou são projetos que você está trabalhando.
Além disso, eu manter este separado (até certo ponto) a partir do cliente. Eu tenho um diretório mestre de pastas do cliente, cada um dos quais tem projetos e cada projeto tem de Vendas e entrega. Nem todos os projetos têm vendas e entrega.
PEP8 e easy_install pode ajudá-lo?
Eu mantenho toda a fonte para meus pacotes dentro de ~ / packages /, e então eu faço uma instalação padrão com "python2.5 setup.py install" sobre eles. Este joga em (para mim) /Library/Frameworks/Python/Versions/current/lib/python2.5/site-packages/. Para o desenvolvimento do meu próprio software, tenho aliases criados para alternar entre tronco / ramos / 1.0, etc, por pré-prending em PYTHONPATH. (Eu tenho que correr 'setup.py build_ext --inplace' em cada um desses diretórios antes que eles vão importar corretamente.)
É importante notar que python2.6 tem um diretório por usuário site-packages, que você pode achar mais conveniente.
O "Módulos" Python página de documentação é um guia útil sobre a organização de código, especificamente os "pacotes" seções
O meu conselho é tentar colocar tudo em seu diretório site-packages (s) a menos que você tenha uma boa razão para não. E eu tento evitar easy_install porque acho que ele tende a cruft a minha sys.path com locais de ovos, mas isso é só comigo. Algumas pessoas acham que é útil.
Se você tem um monte de programas que utilizam bibliotecas diferentes que o conflito pode uns com os outros, você também pode querer verificar virtualenv .
Apenas correu por este site a partir de uma outra questão StackOverflow: http://infinitemonkeycorps.net/docs/pph/ Este endereços mais do que apenas o posicionamento do módulo, mas uma vez que você colocá-lo escrever como você pode facilmente lidar com documentação, testes e distribuição.