Usando variáveis ​​de um script Python em outros scripts Python?


9

Quero configurar um único arquivo python contendo variáveis ​​que tenham os locais de todas as minhas fontes de dados. Isso seria usado por todos os meus outros scripts e, à medida que a fonte de dados mudar, só preciso editar o arquivo.

Meu Data_sources.py ficaria assim:

BC_BEC = "Database Connections\\BC.sde\\FOREST_BC.BC_Eco\\BC.BC_BEC"
BC_TFL = "Database Connections\\Forest_BC.sde\\BC.BC_Admin\\BC.TFL_Boundary"

e assim por diante...

Como obtenho todos os meus outros scripts para carregar ou acessar essas variáveis ​​no Data_sources.py?


Perguntas como esta, que são puro Python, e não sobre um módulo Python ou pacote de sites para GIS, normalmente devem ser pesquisadas / feitas no Stack Overflow .
— PolyGeo

Respostas:


10

Você pode criar um módulo Python instalado que é importável de todos os scripts Python executados usando o Distutils para empacotá-lo.

No documento do Python:

Se tudo o que você deseja fazer é distribuir um módulo chamado foo, contido em um arquivo foo.py, seu script de instalação pode ser tão simples quanto isto:

from distutils.core import setup
setup(name='foo',
      version='1.0',
      py_modules=['foo'],
      )

Você pode instalá-lo via

python.exe setup.py install

E então você pode importar foo de qualquer script Python ou pode usar

python.exe setup.py bdist_wininst

Para criar um instalador do Windows para o módulo, para que você possa distribuí-lo para outros computadores.


há um bom capítulo no livro 'Byte of Python' mostrando exemplos de construção usando os módulos de importação.
— 21811 jonatr

Eu gosto dessa sugestão de criar um módulo, mas não tenho muito conhecimento deles. O comando "python.exe setup.py install" usará um ponteiro para foo.py ou usará o que está atualmente em foo.py? Se eu mudar mais tarde foo.py, o módulo ainda estará atualizado? Obrigado.
— Erro de usuário 29/03

Também vou procurar esse livro. Obrigado pela ajuda Jason e Jonatr.
— Usuário Erro

Correção de vocabulário: a palavra mais precisa do python é "pacote" - útil para procurar documentação e deixar claro que pacotes e módulos são duas coisas diferentes no mundo do python. Além disso, uma sugestão / dica: se você fizer setup.py develop(em vez de install), as edições no pacote serão selecionadas assim que forem salvas, sem a necessidade de reinstalação. (Este é provavelmente apropriado para data_sources.py da pergunta original).
— Dan S.

3
O usuário não está apenas perguntando como importar? Responda a isso abaixo.
— sgillies

12

Em qualquer script no mesmo diretório que Data_sources.py, coloque

from Data_sources import BC_BEC, BC_TFL

no topo. Isso funciona porque o diretório de trabalho está sempre no topo do caminho do python, a menos que você o modifique.

>>> import sys
>>> sys.path[0] == ''
True

Consulte também: http://diveintopython.org/getting_to_know_python/everything_is_an_object.html#d0e4550

Se você deseja compartilhar os dados mais amplamente, pode empacotá-los como outros sugeriram.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.