[Python] Hilo general

Pizzelio

cómo organizáis vosotros el código y los test para que os encuentre los archivos bien?

2 respuestas
eondev

#1261 todo a partir de una carpera raíz desde donde ejecutas el script que quieras, los imports absolutos desde ese mismo nivel.
Si quieres ejecutar un test o script en concreto: Python -m modulo.submodulo.ficheropysinextension

Donde módulo y submódulo son carperas (puedes anidar las que quieras) y el fichero py sin extensión pued eso, el .py sin el .py

1 1 respuesta
Pizzelio

#1262 Pues si hago eso me dice: Relative module names not supported

Yo tengo una raíz, y dentro src y test. Desde la ráiz hago: python -m ./test/tests y me dice eso

2 respuestas
Lolerpopler

#1261 Un ejemplo de lo que yo usaria, si el proyecto es algo mas de 2 scripts
https://github.com/navdeep-G/samplemod
en vez de "sample" yo directamente lo llamaria "src"

Puede que estes teniendo problemas con el PYTHONPATH si los tests no te encuentran el codigo

1 1 respuesta
Fyn4r

#1263 Mirate alguna utilidad para ejecutar los tests, rollo nose, pytest o alguno de esos

2
Pizzelio

#1264 Pues me da que sí porque no solo tengo problemas con los tests, normalmente es un dolor de cabeza los imports. Voy a ver...

eondev

#1263 es que si usas python -m debes hacerlo como te he dicho: python -m test.tests.
En test debes tener la ruta absoluta: from module.submodule import foo y al llamar al test desde la raiz, fuera de la carpeta module Python encontrará la ruta. Debes tener muy claro el punto desde donde lanzas los scripts o desde donde arranca la aplicación para que los imports funcionen como deben.
De todas formas, no usas pytest o alguno del rollo?

1
B

Dentro de tests/

main.py (el foro está tan bien preparado para compartir código que se come las barras bajas :/)

import sys
import unittest

loader = unittest.TestLoader()
testSuite = loader.discover('tests')
testRunner = unittest.TextTestRunner(verbosity=2)
result = not testRunner.run(testSuite).wasSuccessful()
sys.exit(result)
python -m tests

Un test en concreto:

python -m unittest tests.test_foo
1
B

Por defecto con mkvirtualenv se me crea un entorno con mis dependencias personales... ¿Cómo creo un entorno limpio sin dependencias? (esa sería la gracia)

Estoy en ubuntu y ya de por sí me ha costado instalar mkvirtualenv comparado con windows porque he tenido que añadir líneas al .bashrc cuando creo que no debería ser necesario modificar algo así para usar algo como virtualenvwrapper...

2 respuestas
eondev

#1269 no sé qué es mkvirtualenv.
Pero con virtualenv normal y corriente: --system-site-packages=false.
https://docs.python.org/3/library/venv.html

2 respuestas
B

#1270 virtualenvwrapper, me gusta para crear entornos, listarlos, activarlos, desactivarlos, etc...
lsvirtualenv muestra entornos, mkvirtualenv los crea, rmvirtualenv los quita, etc...
Pero por defecto me está creando el enviroment con todos los paquetes instalados en pip...

HeXaN

Poetry y a otra cosa.

1 2 respuestas
B

#1272 +1 a poetry, desde que me lo recomendaste rara vez uso virtualenv

B

#1272 manejas paquetes y entornos? voy a ver.

aren-pulid0

#1269 con lo de #1270 lo haces en un pis pas, no me metería en poetry y esas cosas, solo te va a añadir complejidad.

python -m venv venv/

Algo así era, no estoy seguro al 100 %, le añades lo de

--system-site-packages=false

y ya tienes tu entorno separado del sistema sin dependencias de este. Además si cuando vas a activar el entorno por ejemplo en el visual studio code lo haces desde la terminal del ide, normalmente cada que vez abras la terminal desde ese momento tendrás el entorno ya activado

1 1 respuesta
Pizzelio

Alguien trabaja desarrollando sistemas embebidos con Python? Para preguntarle un poco sobre el trabajo si no le importa

1 respuesta
Slowbro

#1276 Puedes dar más detalles? A mí me tocó hace unos años para algunos prototipos.

De qué tipo de sistemas embebidos hablamos? En bare metal y RTOS, mejor sigue en C o ensamblador. Si es sobre un microlinux, pues es ya otra cosa, pero te puedes llevar alguna sorpresa.

No he podido probar mucho microPython pero igual te vale para lo que quieres.

1 respuesta
Pizzelio

#1277 no sé mucho de la parte técnica solo que desarrollan en Python para sistemas de iluminación inteligentes.

Era más bien para saber un poco si es un campo muy de nicho o si algún día me voy de ahí voy a tener oportunidades de seguir por ese camino.

1 respuesta
Slowbro

#1278 Bueno, esto es solo mi opinión pero en embebidos Python es un plus importante, mientras que C es casi obligatorio. De todos modos, saber de Python nunca te va a cerrar puertas (de hecho, estos últimos años veo ofertas con Python como mandatory).

Por poner un ejemplo chorra en el contexto de iluminación inteligente, si tengo que programar los micros que controlan los dimmers/RGBs/Paneles/etc, los programaría en lo que menos guerra te de (normalmente en C, que va a ser lo que el fabricante ha pensado y te dará utilidades para ello). Sin embargo, si tuviera que diseñar un sistema para controlar estos sistemas a más alto nivel, montaría una aplicación en Python, que te encuentras un programa que capture el sentimiento de tweets y lo mapeas a la iluminación que más te guste en una tarde xD.

1 respuesta
Pizzelio

#1279 pues de C lo justito pero en ningún momento me lo han pedido y la prueba técnica fue completamente en Python así que no sé.

A ver si me cuentan más, gracias!

1
B

#1275 la cosa es que estoy tan acostumbrado a un "npm init" que me gustaría algo así en Python (que no sé si lo hay)

Me gustaría meterle mano a Python y aprender más cosas, pero siempre tengo un problema con las versiones de Python, los entornos, pipe y demás... En cambio node con npm es súper simple.

Me gustaría crear scripts de consola para Linux/windows, algo de reconocimiento de imágenes para un proyectito personal, previsión de algo con inteligencia artificial o Big data, etc..

Pero lo dicho, no sé por dónde empezar

Todos los cursos que veo online son de "Python" como lenguaje, pero no de más allá con todas sus librerías para cosas como las que busco

Alguna ayuda?

1 respuesta
HeXaN

#1281 Poetry, ya lo he dicho.

1 respuesta
B

#1282 sí, gracias, ya le estoy echando un ojo desde que me lo dijisteis.

Ahora busco info de lo siguiente que comento. Gracias

B

Veo que poetry tiene problemas de integración con visual studio Code para el tema de entornos..

Según leo en GitHub están trabajando en ello desde agosto pero no dan fecha estimada de solución.

1 respuesta
B

#1284 yo lo uso a diario con vs code y no tengo ningún problema de integración

1 respuesta
B

#1285 pues yo por ejemplo tengo "black" con poetry y visual studio code no me reconoce el formatter.

Y en la consola no me aparece delante de cada línea el entorno, si bien es verdad que hago poetry show y funciona por estar en la carpeta, pero no puedo distinguir el terminal si estoy en un entorno u otro.

EDIT: Vale parece que lo tengo que configurar a mano en visual studio y sí funcionan.

2 respuestas
B

#1286 debe ser algo que tengas tú instalado, yo no tengo que configurar nada manualmente, seleccionas el intérprete que vas a usar desde el botón de abajo la primera vez y ya lo recuerda para las siguientes

1 respuesta
B

#1287 si pero te sale la consola en plan:

 (Entorno1) C:> 

Porque a mí me sale solo:

 C:> 

Y el entorno sí está activado. Cuando usaba pipenv por ejemplo sí me salía el entorno en la consola.

En cambio en Ubuntu sí me lo hace.. Por eso estaba rallado.

eondev

https://github.com/corollari/linusrants
xDDDDD

3 1 respuesta
Pizzelio

#1289 hostia vaya humos

Usuarios habituales