[Python] Hilo general

B

Hola guerreros. Una dudilla que no sé si tiene solución.

Programo en python habitualmente, tenía un MacBook Pro que he jubilado por un windows. Mi problema viene con los entornos virtuales, estaba cansado de pelearme con ellos y al final instalé wsl y lo gestiono desde ahí. Todo bien, programo en vs code, instalo librerías y ejecuto scripts con wsl.

Ahora bien, si tengo un proyecto, que no requiere de terminal y que podría ejecutar y usar el debuger desde vs code, me encuentro con el problema de que no me encuentra esos virtualenvs creados desde wsl, ya que la estructura de carpetas que genera linux y windows para los entornos virtuales es distinta y los de linux no contienen lógicamente el intérprete de python .exe.

¿Hay alguna forma de usar desde vs code un virtualenv creado en linux o por cojones tengo que crear los virtualenvs en windows?

Un saludo y gracias.

3 respuestas
HeXaN

#811 No te hacía falta instalar WSL para eso.

Instalas pip, instalas poetry y configuras que cree el entorno virtual en la misma carpeta del proyecto (por comodidad, vamos) con poetry config virtualenvs.in-project true.

https://python-poetry.org/docs/

El VSC te cogerá el entorno virtual en cuanto abras las carpeta del proyecto.

3 1 respuesta
B

#812 te como la mierda, no conocía poetry, he ojeado la web y parece que es justo lo que me hace falta

tq

B

#811 Como te dicen se pueden hacer los virtualenv desde windows sin intermediarios.
Me suena muchisimo leer que microsoft habia hecho/estaba trabajando en un server para programar desde vscode pero ejecutar el codigo en wsl2.

B

Lo he probado, hace lo que promete, reafirmo mi agradecimiento XD

B

otra pregunta ¿pylama o pylint? yo prefiero pylama porque no me marca como error la importación de mis propios ficheros

NeV3rKilL

#811 Llego algo tarde pero, vscode se come el virtualenv de WSL sin ningún problema. No sé que problema debes tener porque es tan sencillo como instalar la extensión oficial Remote WSL de vscode y lanzar WSL: Ubuntu (o el que sea) vía F1. Su funcionamiento es complétamente transparente.

Simplemente carga el directorio de trabajo de tu proyecto en WSL y te pillará automáticamente el venv de ese directorio como si fuese nativo.
Es como estar en linux.

1 1 respuesta
B

#817 Gracias!! mola

1 respuesta
NeV3rKilL

#818 Fíjate abajo a la izquierda que hayas cargado el entorno WSL y vscode hará su magia. yo flipé la primera vez que lo probé. Era como estar en linux. Ese vscode te pilla todas las herramientas del linux de WSL, te lanza tu bash en el terminal, el debugger funciona igual, usa las dependencias del WSL, etc.

Hasta puedes ejecutar "$code ." dentro de wsl y se lanza el vscode ya configurado para ese directorio.

2 respuestas
B

#819 flipando con la filosofía de microsoft últimamente

B

#819 acabo de probarlo, funciona al pelo, y ya tenía la extensión instalada sin saberlo, te la recomienda al detectar que tienes instalado wsl en el sistema. Vamos, que entre poetry que recomendó Hexan y lo de wsl estoy encantadísimo. Gracias a los dos

CaNaRy_r00lz

Una pregunta, que no se si se puede hacer con python o con que se podria hacer, no se si alguien se acuerda de aquel salvapantallas de windows que era un enjambre de tuberias.

Digamos que tienes muchas tuberias a distintos niveles "z" con distintos grosores y quieres pasar otra tuberia del punta A al punto B (dandole un rango digamos entre 600mm y 2100mm en "z") sin que toque ninguna otra, con ciertas normal, rectas de 12m , angulos maximo 23º (curva) o 90º etc, eso se puede hacer, (que si, poder se puede) pero es en plan super complicado o es viable?

3 respuestas
HeXaN

#822 Lo complicado es el algoritmo. Programarlo lo puedes hacer en cualquier modelo.

1 respuesta
B

#822 programa una inteligencia artificial

1 respuesta
aIvans

#822 Quizás esto pueda servirte como comienzo:
https://towardsdatascience.com/a-simple-but-strong-ai-bot-for-tron-lightriders-on-a-hexagonal-grid-2d7662ffcbf6

1 1 respuesta
CaNaRy_r00lz

#823 #824 #825 Si lo que me temia es que alguien me dijera algo palo IA, pensaba que podria ser mas facil si le das diferentes opciones es decir, diferente profundidaes y que a partir de ahi se busque la vida, pero claro con mi nulo conocimiento no se cuan complicado podria ser :S

2 respuestas
Fyn4r

#826 eso de "que se busque la vida" Al final es un algoritmo de búsqueda, campo de investigación de la IA me temo xd

1 respuesta
Slowbro

#826 Igual voy extra empanado pero como primer paso puedes intentar modelarlo con una tabla y usando el algoritmo A* (sencillito) donde cada tubería se vuelve obstáculo para la siguiente. Luego le daría una vuelta a como meter las restricciones adicionales y las curvas.

En cualquier caso es un poco marrón. Buen reto si tienes tiempo. Podrías hasta aprovechar para mirar C# y Unity.

1 respuesta
CaNaRy_r00lz

#827 #828 Veamos es que una parte de mi curro consiste en encontra un "camino" entre servicios bajo tierra que se han modelado en 3D y joder a veces es un puto coñazo, entonces me acorde del salvapantallas ese de windows y pensé "y si..." pero vamos que me daba a mi la impresion que no se podria, yo habia pensado en mi infinita ignorancia de por ejemplo.

La superficie es nivel 0 y las tuberias estan en niveles "x" tu eliges nivel -0.6m y que empiece a hacer la linea entre los puntos que has dictado, si encuentra un obstaculo que baje 0.3m de profundidad si esta en -0.6 (que es lo mas superficial que puede estar) hasta llegar a -2.1m ( puede ir bajando 0.3 en 0.3 o 0.1 en 0.1 ) y que deje un espacio de 0.3 entre el obstaculo y la linea que estas haciendo con el grosor dado, vamos que yo me habia imaginado un tocho lleno de "If" y "else" haha obviamente parece que no puede ser asi xD

2 respuestas
NeV3rKilL

#829 dibújalo en papel, haz algunos casos a mano y si la idea funciona a mano, picarla no debe ser complicado.

Algoritmos de path finding hay unos cuantos.

1 1 respuesta
CaNaRy_r00lz

#830 Thanks, pues tendré que mirar eso de algoritmos de path finding a ver si saco algo en claro , gracias

1 respuesta
desu

#829 Yo no he entendido exactamente todas las condiciones del problema.

Buscas 1 camino? Haras multiples busquedas consecutivas? Que movimientos se pueden hacer? Cuando encuentra solucion en que estado se consideraria valido?

Ese problema o es muy facil o es muy dificil.

Ese tipo de problema como asistentes que te proponen soluciones estan bien. Es decir,
Si quieres que te de una aproximacion buena y tu trabajar con ella de manera interactiva... Bien.
Si pretendes que te resuelva multiples consecutivas y tu no hacer nada... O bien que siempre sea perfecto sin margen de imprecisiones. Mal.

Tambien es interesante tener las reglas y aplicarlas para validar lo que tu hagas. Es decir, haces el proceso de buscar el camino a mano, pero tienes la reglas que te verifican si lo que has hecho esta bien. Esto tambien es una muy buena idea tmbn en mi opinion. Tambien te sirve para tener 10 propuestas de soluciones y determinar cual de estas soluciones es la mejor bajo "tu criterio" de manera automatica.

1 respuesta
CaNaRy_r00lz

#832 Pues a ver como lo puedo explicar y que se me entienda, mi empresa se dedica al District Heating, lo que viene a ser llevar tuberias de calefaccion a Edificios o Urbanizaciones, tu te conectas (como al gas/agua/etc) y tienes calefaccion ahorrandote ese dinero, vamos tener calefaccion "central" en tu adosado.

Bien entonces lo que hacemos es un levantamiento topografico de la ruta que vamos a tomar y a su vez un "Utility Survey" (sinceramente nunca lo he visto en España) que viene a ser un levantamietno de todos los servicios que pasan por esa calle, cables, agua, gas, telecomunicaciones,etc etc, eso luego se modela en 3D por ejemplo los tubos de cables de telecomunicaciones son de 0.1m diametro , los de electricidad 0.15m, luego tb se modelan las arquetas y demas cosas , al final tienes una red de "tuberias" bajo tierra, y tienes que encontrar la forma de ir de "A" a "B" sin colisionar con nada. Normalmente se hace la ruta con 5 profundidades, 0.6/0.9/1.2/1.5/1.8/2.1m y se modela dependiendo del grosor de tuberias.
Acto seguido se corre eso en Naviswork y tienes un "Clash Detection" te dice en un rango de 0.3m alrededor de tu tuberia que servicios entran en ese rango.
A todo esto hay que añadir algunas reglas, como las tuberias no puede tiene una curvatura mayor de 35º por ejemplo y se puede poner angulos de 90º.
A partir de ahi hay que buscar la ruta mas optima, entrelazando profundidades para evitar todos esos servicios.

Por eso en mi inmensa ignorancia habia pensado que se podria hacer algo, busque lo que comentaron antes de algoritmos Path Finding pero en Autocad parece ser una locura pk necestias saber la posicion de cada vertice etc etc, yo pensaba que se podria tomar la posicion de objetos , vamos que he visto post preguntando eso y comentan que es muy jodido sino tienes ni idea.

No se si ahora se entiende mejor lo que queria preguntar, yo habia pensando claro si tienes todos los objetos modelados y le das la "ruta" es decir tu haces la ruta a mano y tienes 5 puntos por donde debe pasar, dandole un rango de profundidad de 0.6 a 2.1m podria ir probando cada 0.1m o 0.05m hasta que encontrara la ruta, pero claro todo esto hablando desde la ignorancia pk no se cuantas cosas involucra eso xD pajas mentales de uno tratando de evitar curros tediosos xD

3 respuestas
c0b4c

es un problema complicado desde luego.

y ademas tienes que sumarle el tipico problema que tienes los modelos en un formato que no son los adecuados para buscar soluciones (esto pasa tambien en radiacion y fisica nuclear, que las instalaciones se modelan usando CAD pero luego el software que te hace los analisis lo quiere en otras geometrias. Asi que tienes que convertir tu modelo CAD en otro modelo.

lo primero que intentaria ver es el numero de combinaciones posibles que tienes. seguramente sea un numero absurdamente alto, pero si no lo es probablemente intentaria fuerza bruta / monte carlo.

y tu problema no es solo un problema de optimizacion. es un problema de optimizacion bajo incertidumbre. porque dios sabe lo que vas a encontrarte bajo tierra. si la optimizacion la haces sobre tu modelo y te dice que el minimo son X metros de tuberia, en realidad pueden ser mas porque quiza en realidad necesites mas. por no hablar de los modelos geotecnicos, con los distintos tipos de suelo con su correlacion etc etc vamos un problema gordo de cojones

el lenguaje que uses es el menor de tus problemas, yo lo moveria a otro foro.

2 respuestas
Fyn4r

#834 le sacamos un paper a pachas o qué? xD

1 1 respuesta
c0b4c

#835 acabo de encontrar este: https://onlinelibrary.wiley.com/doi/epdf/10.1002/atr.5670390104

no me esperaba que usase GA la verdad, no me he leido el paper, pero me imagino que el problema del paper es mucho mas pequenyo que el de #833 . no se si el problema que plantea #833 es computacionalmente tratable de manera estocastica. tengo malas experiencias con optimizadores estocasticos, dimensionalidad alta, y minimos locales xd.

hay tantas cosas en las que me gustaria trabajar...

1 respuesta
desu

#833 No me parece un problema imposible pero tampoco facil. Lo veo interasente. No he entendido del todo aun, se suele tardar 1-2 meses en sacar las condiciones/requerimientos de un problema antes de picar 1 linea de codigo xd Yo veo de 3 a 6 meses de trabajo para sacar el modelado ademas que requeriria trabajo de integracion desde el autocad.

Entiendo que tienes por ejemplo 5 tuberias en 5 puntos iniciales, y tienes que llevar esas 5 tuberias a sus respectivos puntos finales sin cruzarse. Lo del clash detection interperto que significa que los cables requeridos tienen que pasar por esas areas para cubrir el servicio?

Si es asi se puede ver como 5 rutas que tienen que entregar paquete de manera secuencial antes de llegar al destino sin cruzarse.

Se podria trabajar sobre un problema relajado, como con los hexagonos de arriba que seria fijar un poco los grados de los movimientos y daria una aproximacion bastante buena y esto seria muy facil de hacer.

#836 No veo porque hay "incertidumbre".

edit: me olvidaba, si quieres presupuesto tira MP. xd

2 respuestas
CaNaRy_r00lz

#834 Si exactamente pensaba que se podia solucionar por fuerza bruta, y si CAD no es el mejor software del mundo pero es el standar
Con respecto a la segunda parte de tu coment, no, los levantamientos de servicios son bastante precisos y si hay dudas, se hacen "trial holes" "Hoyos de prueba"? para ver que hay exactamente ahi, el suelo siendo en ciudad es 0 problema y lo maximo que se va es 2.1m pero siempre se intenta mantener lo mas superficial posible.

Sinceramente? lo veia como cuando un softare encuentra la solucion a un laberinto que lo que hace es probar todos los caminos posibles hasta dar con el adecuado no?

#837 En mi pc no tengo nada mañana saco un par de screenshots para enseñarte a que me refiero , entiendo que es dificil hacerte una idea si nunca lo has visto.

No tiene pk ser funcional 100% con que te salve un 50% del tiempo ya es una gran ayuda, en estos curros y supongo que en IT es lo mismo, cualquier minimo tiempo que ahorres ayuda bastante

1 respuesta
c0b4c

#837 #837 hay multiples incertidumbres.

el terreno no es uniforme con la profunidad, va por capas. A 0.6m es mas facil predecir lo que te vas a encontrar cuando excavas que a 2.1m. Por lo hablar que en algunas zonas dichos datos no existen porque no se han recogido. Estas capas se modelan con una "correlation length" y datos experimentales (CPT).
Su problema no es "pathfinding" en el mundo virtual de matrix. Su problema es "pathfinding" entre tierra, rocas, edificios, alcantarillas, o incluso yacimientos arqueologicos (te puede parecer absurdo pero hay muchas 'obras publicas' que se han tenido que parar porque descubrieron que pasaban por mitad de un antiguo pueblo romano).

#838 entiendo pues. No me termina de convencer que se ignoren por completo 'posibles incertidumbres'. Luego vienen las xorprexax y en lugar de 200 metros de tuberia necesitas 250. de todas formas viviendo en UK deberias conocer en que estado se encuentra el suelo y la via publica.

si lo quieres resolver por fuerza bruta empieza calculando el numero de posibles combinaciones y ponlo por aqui para que nos hagamos una idea.

repito: creo que deberias abrir esto en 'ciencia'

1 respuesta
CaNaRy_r00lz

#839 Creo que no entiendes que esos datos si existen, para algo se hace un levantamiento de lo que hay bajo tierra, usan GPR y RF a parte de otras tecnicas practicamente pillar el 80/90% de lo que hay bajo tierra y luego se apoyan en los planos de las empresas que tienen esos servicios no creo que en España se haga eso sinceramente

No, no hay sorpresas como piensas, es bastante preciso, que te puedes encontrar algo que no ha sido pillado? podria ser pero siempre salen todas las anomalis con los scaneos de GPR (ground penetrating radar)