Pergunta

Qual seria a melhor estratégia estrutura de diretório para compartilhar utilitários módulo através de meus projetos Python? Como os módulos comuns seria atualizado com novas funções que eu não gostaria de colocá-los no python diretório de instalação.

project1/
project2/
sharedUtils/

De project1 eu não posso usar "importação .. \ sharedUtils", há alguma outra maneira? Eu preferiria não codificar o "sharedUtils" localização

Agradecemos antecipadamente

Foi útil?

Solução

Faça um pacote autônomo separado? E colocá-lo no site-packages / do seu python instalar?

Há também é o meu favorito quando se trata de modo de desenvolvimento:. Uso de links simbólicos e / ou arquivos *.pth

Outras dicas

Suponha que você tenha sharedUtils/utils_foo e sharedUtils/utils_bar. Você pode editar o seu PYTHONPATH para incluir sharedUtils, em seguida, importá-los em project1 e project2 usando

import utils_foo
import utils_bar
etc.

No Linux, você poderia fazer isso estar editando ~ / .profile com algo parecido com isto:

PYTHONPATH=/path/to/sharedUtils:/other/paths
export PYTHONPATH

Usando a variável de ambiente PYTHONPATH afeta os diretórios que pesquisas python quando se olha para os módulos. Uma vez que cada usuário pode definir sua própria PYTHONPATH, esta solução é boa para projetos pessoais.

Se você quiser que todos os usuários na máquina para ser capaz de módulos de importação em sharedUtils, em seguida, você pode conseguir isso usando um arquivo .pth. Exatamente onde você colocar o arquivo .pth pode depender de sua distribuição python. Vejo http: //bob.pythonmac. org / arquivos / 2005/02/06 / utilizando-PTH-arquivos-de-python-desenvolvimento /

Estrutura de diretórios:

project1/foo.py
sharedUtils/bar.py

Com os diretórios como você mostrou-lhes, a partir foo.py dentro do diretório project1 você pode adicionar o caminho relativo para sharedUtils da seguinte forma:

import sys
sys.path.append("../sharedUtils")
import bar

Isso evita codificar um caminho C:/../sharedUtils, e vai trabalhar enquanto você não mudar a estrutura de diretórios.

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