[PyVigo] Perdiendo modulos y referencias por el camino... sabeis mas?

Luigi Pirelli luipir at gmail.com
Fri Jun 30 11:37:52 CEST 2017


guay! tener mas ojos es siempre mui util, gracias :)

2017-06-29 23:26 GMT+02:00 José Juan Montes <jjmontes at gmail.com>:
>>>> none_module = None
>>>> none_module.my_function()
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> AttributeError: 'NoneType' object has no attribute 'my_function'

esto es

> En el primer caso el módulo no está importado. En el segundo caso, el módulo
> es una variable con valor None.
>
> Por esto me da la sensación de que, más que "desaparecer" el módulo, el
> símbolo está siendo asignado el valor None en algún punto. El hecho de que
> también suceda con clases e instancias sugiere que quizá en algún punto se
> está asignando None a una variable a la que se está pasando .

que haya algun punto en que se asigne al modulo el valore None, de
verdad no lo habia pensado! pero tendría que se en cualquiera
plataforma... y esto pasa solo en Wndzozz

> Unas preguntas:
>
> 1) ¿Podrías pasarnos los mensajes de error sin traducir?

despues eta ronda de tests... he creado un task para investigar y
resolver de una vez este problema... y es claro necesitare' una
procedura reproducible. Ya mas o meno la tengo, pero no puedo pararme
en esto hasta terminar cosas con mas prioridad.... asi' que por ahora
ningun mensaje (que al final es lo de arriba)

> 2) Sería interesante ver una pieza de código completa donde ese error
> sucede.

este el fix tonto (que yo mismo me averguenzo de esto)
https://github.com/boundlessgeo/qgis-geoserver-plugin/commit/c9e88b6241516bfc7bdeb13c47f1e2f83637d48c
y allí el codigo... lo puede provar en qgis y haciendo la procedura de
paquetización con "paver setup"
el guay del sw libre es que los recurso estan todos disponibile :)
mas info como instalar estan aqui:
https://github.com/boundlessgeo/qgis-geoserver-plugin

la procedura de rundockertests.sh no os sirve para simular el problema
ya que lo hace en entorno docker/linux

> 3) ¿Estáis usando Twisted o Asyncio en vuestro código?

no, anda de threads o async... lo unico de async es el event driven
del event loop de QT/PyQT... pero este es bastante fiable.

> 4) ¿Estáis usando weakreferences o descriptors en vuestro código?

ningun weakreferences por lo meno en los modulos pure python que
escribimos... otra cosa es que haya weakreferences en los wrapper SIP.
Per en general no. Los que perdemos sono siempre cosas que
apartenecesn a nuestro codigo en python puro.
Algunos modulos nuestro usan descriptors... pero no en los modulos que
se pierden.

> 5) Comprobemos si el módulo está o no importado, listando los módulos en ese
> punto. Usa algo como esto en el lugar donde estás reimportando el módulo:
>
> import sys
> print(sorted(sys.modules.keys()))

mui buena idea

> 6) El hecho de que sólo se reproduzca en Windows podría sugerir un bug
> relacionado con la plataforma. ¿Es seguro que sólo se reproduce en Windows?
> ¿Se reproduce siempre, o sólo a veces?

es reproducible... y se soluciona reimportando. Pasa solo en Win.

> 7) ¿Podéis probar con una versión anterior de Python 2.7 / OSGeo4W?

lo malo es que no... con Jürgen que paquetiza OSGeo4W estamos en
contacto para instalar 2.7.12... OSGeo4W no lo hacemos nosotros, a
pesar que podríamos pero hacerlo es bastante un trabajo que es mejor
que lo haga directamente el paquetizador.

>
> Un saludo,
>
> Jose Juan Montes


muchas gracias

Luigi Pirelli

**************************************************************************************************
* Boundless QGIS Support/Development: lpirelli AT boundlessgeo DOT com
* LinkedIn: https://www.linkedin.com/in/luigipirelli
* Stackexchange: http://gis.stackexchange.com/users/19667/luigi-pirelli
* GitHub: https://github.com/luipir
* Mastering QGIS 2nd Edition:
* https://www.packtpub.com/big-data-and-business-intelligence/mastering-qgis-second-edition
**************************************************************************************************


More information about the Vigo mailing list