localização de recursos não-código padrão para pacotes Python
Pergunta
Este deve ser um cenário comum, mas não conseguiu encontrar qualquer post relevante ainda ..
Eu pretendo implantar uma biblioteca Python (eu acho que o mesmo se aplica a aplicações regulares), que faz uso de algumas imagens e outros arquivos de recursos. O que é o local padrão para esses itens? Imagino, por Foo
projeto, as escolhas seriam
- diretório
resources
ter no repositório de origem e, em seguida, mover arquivos para/usr/share/foo/
- recursos Coloque diretamente dentro do pacote python que passa sob
/usr/lib/python-<version>/foo/
Todas as sugestões?
Editar:. Como sugerido, esclarecendo que a plataforma principal este será executado em é Linux
Solução
Esta questão é um pouco incompleta, porque uma resposta adequada dependerá do sistema operacional subjacente, como cada um tem o seu próprio modus operandi. No Linux (e OSs mais baseado em UNIX), por exemplo, / usr / share / foo ou / usr / local / share / foo seria o padrão. Em OS X, você pode fazer o mesmo, mas eu acho "/ Library / Application Support / Foo" (apesar de que é geralmente para armazenar configurações e outros enfeites) seria o lugar para colocar essas coisas, embora se você estiver bibliotecas escrita após a "quadro" ideia, todos os recursos seriam incluídos na /Library/Frameworks/Foo.Framework" ... Aplicativos no oS X, por outro lado deve mantém todos os recursos lá dentro do diretório de recursos dentro Foo.app
Outras dicas
Nós colocar os arquivos não py em /opt/foo/foo-1.2/...
Exceto, é claro, para a mídia estática que é servido pelo Apache, que vai para /var/www/html/foo/foo-1.1/media/...
Exceto, é claro, para arquivos de configuração específicas do cliente. Eles vão para
/var/opt/customer/foo/...
Aqueles seguir os padrões Linux como eu entendo eles.
Nós tentamos ficar longe de /usr/lib/
e /lib
tipos de locais porque aqueles sentem como se estivessem parte da distribuição. Nós inclinar-se para /opt
e /var
porque eles estão claramente separados dos diretórios Distro Linux.
O padrão localização é onde seus libs padrão vai. Mas não soa para mim do que você escreveu, que você vai querer o seu lib python lá. Eu acho que você deve experimentar Virtualenv .
Se você não quiser passar por todos os problemas (bem, é realmente apenas eleva-se a sudo easy_install virtualenv
para você), você pode tentar simplesmente despejar seu lib python em qualquer dir na sua ~/
e fazer algo ao longo das linhas de
import sys
sys.path.append( '/full/path/to/your/lib/goes/here')
para qualquer aplicativo que usa a sua lib.
Por favor, tenha em mente que os exemplos dados são apenas para teste-fins. Para qualquer coisa live-ish, eu recomendo que você use distutil . Exemplos de uso são dadas aqui .