que programa paquetes integrar instalar idle ejecutar cómo conectar con como archivo abrir python settings

programa - integrar python con html



¿Cuál es la forma oficial de almacenar la configuración de los programas de Python? (12)

¿por qué Guido bendijo algo que está fuera de su alcance? No, no hay nada particularmente bendecido.

Django usa archivos reales de Python para las configuraciones, Trac usa un archivo .ini y algunas otras piezas de software usan archivos XML para contener esta información.

¿Son uno de estos enfoques bendecidos por Guido y / o la comunidad de Python más que otro?


Como muchos han dicho, no hay una forma "oficial". Sin embargo, hay muchas opciones. Hubo una charla en PyCon este año sobre muchas de las opciones disponibles.


Depende de la audiencia prevista predominante.

Si son los programadores quienes cambian el archivo de todos modos, solo use archivos de Python como settings.py

Si se trata de usuarios finales, piense en archivos ini.


Depende en gran medida de lo complicada que sea su configuración. Si está haciendo una asignación de clave-valor simple y desea la capacidad de editar la configuración con un editor de texto, creo que ConfigParser es el camino a seguir.

Si su configuración es complicada e incluye listas y estructuras de datos anidadas, usaría XML o JSON y crearía un editor de configuración.

Para cosas realmente complicadas donde no se espera que el usuario final cambie mucho la configuración, o es más confiable, simplemente cree un conjunto de clases de Python y evalúe un script de Python para obtener la configuración.


Es más de conveniencia. No hay forma oficial por decir. Pero usar archivos XML tendría sentido ya que pueden ser manipulados por varias otras aplicaciones / bibliotecas.


No estoy seguro de que exista una forma "oficial" (no se menciona en el Zen de Python :)) - Suelo usar el módulo Config Parser y creo que eso es muy común. Prefiero eso sobre el enfoque de archivo python porque puede escribir de nuevo y volver a cargar dinámicamente si lo desea.


No hay una solución bendita hasta donde yo sé. No existe una forma correcta o incorrecta de almacenar la configuración de la aplicación, ni xml, json ni todos los tipos de archivos están bien, siempre y cuando te sientas cómodo. Para Python personalmente uso pypref es muy fácil, multiplataforma y directo.

Pypref es muy útil ya que uno puede almacenar configuraciones y preferencias estáticas y dinámicas ...

from pypref import Preferences # create singleton preferences instance pref = Preferences(filename="preferences_test.py") # create preferences dict pdict = {''preference 1'': 1, 12345: ''I am a number''} # set preferences. This would automatically create preferences_test.py # in your home directory. Go and check it. pref.set_preferences(pdict) # lets update the preferences. This would automatically update # preferences_test.py file, you can verify that. pref.update_preferences({''preference 1'': 2}) # lets get some preferences. This would return the value of the preference if # it is defined or default value if it is not. print pref.get(''preference 1'') # In some cases we must use raw strings. This is most likely needed when # working with paths in a windows systems or when a preference includes # especial characters. That''s how to do it ... pref.update_preferences({''my path'': " r''C:/Users/Me/Desktop'' "}) # Sometimes preferences to change dynamically or to be evaluated real time. # This also can be done by using dynamic property. In this example password # generator preference is set using uuid module. dynamic dictionary # must include all modules name that must be imported upon evaluating # a dynamic preference pre = {''password generator'': "str(uuid.uuid1())"} dyn = {''password generator'': [''uuid'',]} pref.update_preferences(preferences=pre, dynamic=dyn) # lets pull ''password generator'' preferences twice and notice how # passwords are different at every pull print pref.get(''password generator'') print pref.get(''password generator'') # those preferences can be accessed later. Let''s simulate that by creating # another preferences instances which will automatically detect the # existance of a preferences file and connect to it newPref = Preferences(filename="preferences_test.py") # let''s print ''my path'' preference print newPref.get(''my path'')


No sé si esto se puede considerar "oficial", pero está en la biblioteca estándar: 14.2. ConfigParser - Analizador de archivos de configuración .

Esto es, obviamente, no es una solución universal, sin embargo. Solo use lo que le parezca más apropiado para la tarea, sin ninguna complejidad necesaria (y, especialmente, ¡completa, piense en los configuradores automáticos o GUI).


Para aplicaciones web, me gusta usar las variables de entorno del sistema operativo: os.environ.get(''CONFIG_OPTION'')

Esto funciona especialmente bien para configuraciones que varían entre implementaciones. Puede leer más acerca de la lógica detrás del uso de archivos env aquí: http://www.12factor.net/config

Por supuesto, esto solo funciona para valores de solo lectura porque los cambios en el entorno generalmente no son persistentes. Pero si no necesitas acceso de escritura, son una muy buena solución.


Solo una opción más, PyQt. Qt tiene una forma independiente de plataforma de almacenar configuraciones con la clase QSettings. Debajo del capó, en Windows usa el registro y en Linux almacena la configuración en un archivo conf confidente. QSettings funciona muy bien y es bastante parecido.


Una de las maneras más fáciles de usar es usar el módulo json . Guarde el archivo en config.json con los detalles como se muestra a continuación.

Guardando datos en el archivo json:

{ "john" : { "number" : "948075049" , "password":"thisisit" } }

Lectura del archivo json:

import json #open the config.json file with open(''config.json'') as f: mydata = json.load(f) ; #Now mydata is a python dictionary print("username is " , mydata.get(''john'').get(''number'') , " password is " , mydata.get(''john'').get(''password'')) ;