Usando le variabili di uno script Python in altri script Python?


9

Voglio impostare un singolo file Python contenente variabili che hanno le posizioni di tutte le mie origini dati. Questo verrebbe quindi utilizzato da tutti gli altri miei script, quindi come cambia l'origine dati, devo solo modificare un file.

My Data_sources.py sarebbe simile a questo:

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 così via...

Come faccio a caricare o accedere a queste variabili tutti gli altri miei script in Data_sources.py?


Domande come questa, che sono pure Python piuttosto che su un modulo Python o un pacchetto del sito per GIS dovrebbero normalmente essere ricercate / poste su Stack Overflow .
PolyGeo

Risposte:


10

È possibile creare un modulo Python installato che è impossibile da ogni script Python eseguito utilizzando Distutils per impacchettarlo.

Dal documento Python:

Se tutto ciò che vuoi fare è distribuire un modulo chiamato foo, contenuto in un file foo.py, lo script di installazione può essere semplice come questo:

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

È quindi possibile installarlo tramite

python.exe setup.py install

E poi puoi importare foo da qualsiasi script Python, oppure puoi usarlo

python.exe setup.py bdist_wininst

Per creare un programma di installazione di Windows per il modulo in modo da poterlo distribuire ad altri computer.


c'è un bel capitolo nel libro 'Byte of Python' che mostra esempi di costruzione usando i moduli di importazione.
Jonatr

Mi piace questo suggerimento di creare un modulo ma non ne sono molto informato. Il comando "python.exe setup.py install" utilizzerà un puntatore a foo.py o utilizzerà ciò che è attualmente in foo.py? Se in seguito cambio foo.py il modulo sarà ancora attuale? Grazie.
Errore utente

Cercherò anche quel libro. Grazie per l'aiuto Jason e Jonatr.
Errore utente

Correzione del vocabolario: la parola python più precisa è "pacchetto" - utile per cercare la documentazione ed essere chiari sul fatto che pacchetti e moduli sono due cose diverse nel mondo di Python. Inoltre, un suggerimento / suggerimento: se lo fai setup.py develop(invece di install), le modifiche al pacchetto verranno raccolte non appena vengono salvate, senza bisogno di una reinstallazione. (Questo è probabilmente appropriato per data_sources.py dell'interrogatore originale.)
Dan S.

3
L'utente non sta solo chiedendo come importare? Rispondi a quello qui sotto.
sgillies,

12

In qualsiasi script nella stessa directory di Data_sources.py, inserisci

from Data_sources import BC_BEC, BC_TFL

in cima. Questo funziona perché la directory di lavoro è sempre all'inizio del percorso di Python a meno che tu non l'abbia modificata.

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

Vedi anche: http://diveintopython.org/getting_to_know_python/everything_is_an_object.html#d0e4550

Se si desidera condividere i dati in modo più ampio, è possibile impacchettarli come altri hanno suggerito.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.