[Python] Hilo general

B

#1137 no uso antivirus, así que no tengo ese problema, pero tengo otros xddd

Elinombrable

#1140 ¿Qué version de python estás usando? Yo llevo semanas pegándome con los imports y en Pycharm da errores distintos a VSCode pero al final el programa si lo ejecutas funciona tal y como comentas.

1 respuesta
Kaiserlau

Si estáis bajando de nivel para eso y usando imports relativos mejor meter al path del primer nivel si no estáis inicializando desde él y por algun rollo teneis que meter cosas.

#1140 es para flask? te sugiero tirarle un ojo a esto https://flask.palletsprojects.com/en/1.1.x/patterns/appfactories/

1 respuesta
aIvans

Ahora que lo recuerdo, yo en django lo hago así.

from .forms import Image

Cuando están al mismo nivel y funciona todo bien

B

.

2 respuestas
bLaKnI

#1145 Esto es porque en el PyCharm juegas con los "source roots" de las carpetas.
Para la mayoria de casos directos, deberás trabajar o bien con init.py (que a mi no me va nunca....) o añadiendo rutas correctas en el syspath antes del import.

1 1 respuesta
eondev

#1145 si lanzas un .py dentro de una carpeta python considera que debes dar el nombre completo del módulo. En este caso se lanzaría así:

python -m config.app

Lo idóneo es que app esté por delante de config y uses rutas absolutas, así pycharm no se liará

1 respuesta
B

.

3 respuestas
HeXaN

#1148 Un fichero de texto xD

1 respuesta
B

.

3 respuestas
HeXaN

#1150 Es un fichero de texto jaja.

1 respuesta
B

.

Unrack

#1150 import json

1
Fyn4r

#1150 es trivial, lo bonito es que te lo parsea a un diccionario

n40k1

#1148 Quizá leyendo la fecha y que cuando lleguen las 0:00 ponga a 0 el contador.

bLaKnI

#1148 Exacto. Source Root en Pycharm. Pero luego cuando pasas el VENV a prod y mueves los scripts a pelo, si o si, el primero que se carga o se llama, debe añadir en el syspath los 2 primeros niveles de distro, sino, kaput.

B

Buenos días, busco una buena práctica para hacer lo siguiente.

Me encargaron integrar un datawarehouse Maria DB de una aplicación, con otra aplicación que usa Sql Server, el dwh está en AWS y la otra en Azure.

Para hacerlo, monté una api rest con Django rest framework y bien, lleva semanas funcionando sin problemas.

Pero ahora han creado dos dwh nuevos a parte del que había y tengo que integrarlos también.

¿Cuál sería la mejor forma de hacerlo? Se me ocurren tres cosas (si se os ocurre alguna más, por favor, decídmelo):

  1. Nuevos webservices (este es el camino más fácil, pero cada vez que tenga que cambiar algo tendré que cambiarlo en 3 sitios)
  2. Mirar si existe alguna forma de hacer "unions" con los model serializers
  3. Insertar los datos de los 3 dwh en una tabla, esto tendría que hacerlo con una tarea programada o algo para que no haga esa bestialidad en cada consulta a la api

halluda!!

EDIT: IMPOSIBLE

Aunque haga un union de dos querysets, los ids se repiten en todas las tablas

1 respuesta
Ranthas

#1157 En nuestra empresa tenemos una arquitectura igual; tenemos N clientes cada uno con su dwh, y hay varias ETL que al final vuelcan toda la información en el dwh central

Para evitar los IDs repetidos, el dwh central dispone de otro campo, client_uuid, que forma PK con el uuid de cada una de las tablas. El proceso de unificar toda la info ya dispone de los client_uuid, por lo que es capaz de crear las PK.

1 1 respuesta
B

#1158 justo esa solución he propuesto, me han preguntado que si sería más rápido duplicar los métodos de la api, les he dicho que sí pero que no es lo mejor, y ahora están pensando qué hacer, pero ya saco yo la bola de cristal, me pedirán que duplique los métodos de la api, ya sabes, consultoras y costes :man_facepalming:

1
20 días después
jaime9714

Buenas, necesito hacer un launcher de un script de python. El probema que he visto en PyInstaller es que no soporta paquetes como TensorFlow u OpenCV. ¿Me podéis arrojar algo de luz para poder crear un ejecutable sencillo?

1 respuesta
wdaoajw

#1160 cron

1 respuesta
jaime9714

#1161 muchas gracias!

Retomando el hilo pregunto si alguien ha trasteado grabación webcam con opencv. Estoy teniendo problemas ya que necesito que el tiempo real y el grabado sea exacto,es decir, 14:00 sean 14:00 grabados.

El problema que se me plantea es que en openCV establece el archivo de salida a unos frames establecidos (pongamos 30) y es a este al que alimenta de imágenes. Lo que he visto es que las webcams ,aún diciendo que funcionan a 30fps, varían sus fps dependiendo de las condiciones de luz.

Por tanto, al alimentar con menos fps al archivo , el resultado es un archivo de menor duración (segundos ,pero lo suficiente). ¿Alguien sabe de otra librería para grabar webcam más fácilmente o algún tip?

1 respuesta
covaga

#1162 prueba con este https://github.com/serengil/deepface

10 días después
HeXaN

Unas risas en este reflote.

21 1 respuesta
bLaKnI

#1164 Y esto?

No es precioso ESTO?

Python me empitona...


Por cierto, recientemente me ha tocado trabajar con xlsxwriter.
Pero que cosa mas dulce por favor... Creo que no he visto librería mas bien implementada en la vida!

https://xlsxwriter.readthedocs.io/#

1 1 respuesta
B

Hola, necesito saber cómo se haría esto en el mundo real, porque lo que he hecho funciona pero creo que se me ha ido de las manos.

Una función recibe una lista de objetos, cada lista de objetos contiene una lista de diccionarios con movimientos de banco, ese diccionario se compone de importe y descripción.

Necesito obtener las retiradas de dinero (importes negativos), y después obtener la suma de los movimientos negativos, he hecho esto que funciona:

neg_entries_list = list(map(lambda x: [n for n in x.ledger if n['amount'] < 0], categories))

neg_sum = sum(map(lambda x: x['amount'], [item for sublist in neg_entries_list for item in sublist]))

Seguro que hay una forma mejor de hacerlo, solo busco ver otras opciones.

EDIT: no puedo usar flatten de numpy por requerimiento explícito

3 respuestas
aIvans

#1166 No existe la posibilidad que esos valores estén almacenados en una base de datos? De ese modo sólo será hacer la consulta a la base de datos y ya está.

1 respuesta
B

#1167 que va, son unos ejercicios en freecodecamp para una de las certificaciones de python, sé que con un par de bucles for está hecho, pero las estoy usando para aprender un poco sobre las list comprehension maps etc

NeV3rKilL

#1166 En Python se prefiere el código en una linea si eso hace el código más legible.

Si tu list comprehension se complica en exceso, es mejor usar bucles normales.

Lo de: "Code is read many more times than written"

1 1 respuesta
stuckED

#1165 Es dulcísima. La diferencia entre trabajar con esta y con la de php para xsl es la noche y el día.

1 respuesta