5 votos

Función definida por el usuario en PyQGIS script

Tengo un script que funciona bien desde Processing->Toolbox->User Scripts. Sin embargo, he puesto algunas funciones definidas por el usuario en "my_functions.py" que puedo llamar desde "Timing_Advance.py".

El problema es que, cuando edito las funciones en "my_functions.py" en el editor de QGIS script, tengo que reiniciar QGIS para que los cambios surtan efecto. Esto es quizás porque, cuando reinicio QGIS, hace un archivo "my_fucntions.pyc" y lo mantiene en la misma ubicación. El archivo .pyc no se actualiza cuando edito las funciones definidas por el usuario en "my_functions.py".

¿Cómo puedo actualizar el archivo my_functions.pyc después de editarlo, sin tener que reiniciar QGIS?

ACTUALIZACIÓN 24 de enero de 2017 Parece que incluir las siguientes líneas tampoco está haciendo ninguna diferencia

import sys
sys.path.append(r'C:\Users\EDEYARI\.qgis2\processing\scripts')
import py_compile
py_compile.compile(r'C:\Users\EDEYARI\.qgis2\processing\scripts\my_functions.py')

import my_functions

Si añado algunas líneas ficticias como un "print" y vuelvo a ejecutar el script, el print no da la salida deseada, hasta que reinicio QGIS

3voto

Mue Puntos 2469

Intenta usar lo siguiente:

import py_compile
py_compile.compile('path/to/my_functions.py')

0 votos

Añadí las líneas sugeridas y luego añadí un trozo de código ficticio print "hi" en my_functions.py. si el código funcionara entonces habría visto la respuesta en la consola de python, pero no

0 votos

@Arindam - Hmm, quizás este post pueda ayudar: Reimportación de funciones personalizadas sin reiniciar QGIS

0 votos

Debo estar perdiendo algo elemental. He añadido estas líneas import imp, my_functions imp.reload(my_functions) from my_functions import * pero ahora me sale el error "See log for Details"

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X