¿Usa variables de un script de Python en otros scripts de Python?


9

Quiero configurar un único archivo de Python que contenga variables que tengan las ubicaciones de todas mis fuentes de datos. Esto sería utilizado por todos mis otros scripts, luego, a medida que cambie la fuente de datos, solo tengo que editar un archivo.

Mi Data_sources.py se vería así:

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"

y así...

¿Cómo consigo que todos mis otros scripts carguen o accedan a estas variables en Data_sources.py?


Preguntas como esta, que son Python puro en lugar de un módulo Python o un paquete de sitio para SIG, normalmente deben investigarse / preguntarse en Stack Overflow .
— PolyGeo

Respuestas:


10

Puede crear un módulo Python instalado que se pueda importar desde cada script Python que ejecute utilizando Distutils para empaquetarlo.

Del documento de Python:

Si todo lo que quiere hacer es distribuir un módulo llamado foo, contenido en un archivo foo.py, entonces su script de configuración puede ser tan simple como esto:

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

Luego puede instalarlo a través de

python.exe setup.py install

Y luego puede importar foo desde cualquier script de Python, o puede usar

python.exe setup.py bdist_wininst

Para crear un instalador de Windows para el módulo para que pueda distribuirlo a otras computadoras.


Hay un buen capítulo en el libro 'Byte de Python' que muestra ejemplos de construcción usando módulos de importación ang.
— jonatr

Me gusta esta sugerencia de crear un Módulo, pero no conozco mucho de ellos. El comando "python.exe setup.py install" usará un puntero a foo.py, ¿o usará lo que está actualmente en foo.py? Si luego cambio foo.py, ¿el módulo seguirá estando actualizado? Gracias.
— Error de usuario

También buscaré ese libro. Gracias por la ayuda Jason y jonatr.
— Error de usuario

Corrección de vocabulario: la palabra python más precisa es "paquete": útil para buscar documentación y dejar en claro que los paquetes y los módulos son dos cosas diferentes en el mundo python. Además, una sugerencia / sugerencia: si lo hace setup.py develop(en lugar de install), las ediciones del paquete se recogerán tan pronto como se guarden, sin necesidad de una reinstalación. (Esto probablemente sea apropiado para el data_sources.py del interrogador original).
— Dan S.

3
¿No está el usuario preguntando cómo importar? Responde a eso a continuación.
— sgillies

12

En cualquier script en el mismo directorio que Data_sources.py, coloque

from Data_sources import BC_BEC, BC_TFL

en la cima. Esto funciona porque el directorio de trabajo siempre está al principio de la ruta de Python a menos que lo haya modificado.

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

Ver también: http://diveintopython.org/getting_to_know_python/everything_is_an_object.html#d0e4550

Si desea compartir los datos más ampliamente, puede empaquetarlos como otros han sugerido.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.