https://foro.gambas-es.org/viewtopic.php?f=16&t=7014
-----------------------------------
tincho
Sabado, 23 Junio 2018, 11:47

Equivalente Del Import De Python En Gambas.
-----------------------------------
Pues eso, existe en gambas algún método para usar módulos y funciones importándolas desde una librería?
Si es así, como se crean dichas librerías, ¿Tienen que ser compiladas o pueden ser código fuente?
Saludos.


-----------------------------------
vuott
Sabado, 23 Junio 2018, 12:08

Re: Equivalente Del Import De Python En Gambas.
-----------------------------------
...hablando de "[i]librerias[/i]" solo aquellas escritas en C: 

[url=https://es.wikipedia.org/wiki/Biblioteca_(inform%C3%A1tica)#Bibliotecas_din%C3%A1micas]https://es.wikipedia.org/wiki/Biblioteca_(inform%C3%A1tica)#Bibliotecas_din%C3%A1micas
https://sillybytes.net/2012/07/librerias-compartidas-shared-libraries.html
http://packaging.ubuntu.com/es/html/libraries.html
https://blog.carreralinux.com.ar/2018/03/librerias-compartidas-en-linux/


-----------------------------------
jsbsan
Domingo, 24 Junio 2018, 12:46

Re: Equivalente Del Import De Python En Gambas.
-----------------------------------
Tincho:

Vuott a subido al foro un montón de ejemplos de uso de librerias hechas en C y creo que alguna en C++

Ahora, si quieres usar algo hecho en python (librerias hechas en python), pues yo tengo varios ejemplos, pero lo que yo hago es crear script de python, ejecutarlos, y leer los resultados desde gambas y trabajar con esos resultados.

Saludos


-----------------------------------
Shell
Lunes, 25 Junio 2018, 09:07

Re: Equivalente Del Import De Python En Gambas.
-----------------------------------
Jeje. :-)

¿ Para que necesitas el "import" de Python ?.  :roll: 

Cada lenguaje tiene sus maneras de hacer las cosas.
Gambas tiene sus componentes y "librerías".  Entonces , ¿ que te preocupa ?.  :? 

Una librería como tu la llamas en Python es un modulo. Un grupo de funciones plasmadas
en un archivo .py (archivo de Python ).

En Python tu puedes tener el modulo[b] matematicas.py[/b] y hacer uso en otro archivo [b]misproblemasdemates.py [/b]llamándola
de dos formas distintas.

[b]import matematicas[/b]

[b]from matematicas import trigonometría[/b]

(Solo importamos la parte de trigonometría)

Les llaman con la palabra "namespace"

[b]from matematicas import *[/b]

Todo el modulo.

De la primera forma para llamar a un método o función:

[b]matematicas.trigonometria.calcularseno()[/b]

De la segunda forma.

[b]trigonometría.calcularseno()[/b]

¿ Qué te interesa saber más ?. :-)

Aunque hay librerías que están compiladas de alguna forma (ya que Python se entiende también con su abuelo "C" ...hahaha).
Normalmente vas a encontrar archivo suelto en algún lugar del disco. Por ejemplo el modulo [b]math.py[/b]

Esta compuesto de muchos tipos de funciones, pero puede que a ti "solo" te interese una parte de esta librería.
Otra cosa que hay que tener en cuenta es "según como importes la librería" es mejor hacerlo de alguna forma
concreta.  Imagina que tienes una función que se llama igual que la que contiene la librería, por el orden
que tiene, suplantaría a la de la librería o modulo. De esto que sea mejor llamarla de la forma:

[b]import matematicas[/b]

Ahora estoy un poco dormido. Pero a lo mejor se puede hacer:

[b]import matematicas.trigonometria[/b]

[url=http://docs.python.org.ar/tutorial/2/modules.html]Modulos en Python

Que bien, que te guste tanto Python. Jajajaja.. :twisted: 
Últimamente no tengo tiempo ni para uno ni para otro.  :sad: 


Saludos


-----------------------------------
tincho
Lunes, 25 Junio 2018, 19:01

Re: Equivalente Del Import De Python En Gambas.
-----------------------------------
Antes de nada, gracias por las respuestas. Les explico mejor la pregunta.
Al comenzar mi aprendizaje en python comprobé que se usa muchísimo esto de import esto import lo otro... el tema es que en gambas (con código gambas)llevo hechas bastantes módulos con funciones, pero a la hora de usarlas en diferentes proyectos lo que hago es copiar los módulos dentro del código de gambas en el directorio /src . Hace un tiempo se hablo acá en el foro de usar enlaces a los archivos de los módulos en cuestión, pero no me termina de convencer porque cada vez que abro un proyecto que tiene "referenciados" dichos módulos estos quedan solo lectura y no me gusta nada eso porque limita que los cambie sobre la marcha. Ya se que Shordi seguramente dirá que eso esta bien para que sea mas seguro, pero la realidad es que cuando soy solo yo que toco los códigos de mi pc me parece una traba mas que una ayuda.
Así que si escribo unas funciones en gambas (nada de python ni C ni otro lenguaje) ¿Como las puedo "importar" a mi proyecto sin tener que usar el método de los enlaces o links del sistema de archivos? 
¿Como puedo implementar algo parecido a los que en python es el "import" en gambas con código gambas.?

Saludos.


-----------------------------------
Shell
Martes, 26 Junio 2018, 09:02

Re: Equivalente Del Import De Python En Gambas.
-----------------------------------
Tincho:

[quote]
Hace un tiempo se hablo acá en el foro de usar enlaces a los archivos de los módulos en cuestión, pero no me termina de convencer porque cada vez que abro un proyecto que tiene "referenciados" dichos módulos estos quedan solo lectura y no me gusta nada eso porque limita que los cambie sobre la marcha. Ya se que Shordi seguramente dirá que eso esta bien para que sea mas seguro, pero la realidad es que cuando soy solo yo que toco los códigos de mi pc me parece una traba mas que una ayuda.
[/quote]

¿ De solo lectura ?. Pues me parece que este modulo enlazado se podía modificar desde el código en el que estas trabajando en ese momento. 
A menos que, quizás con unos determinados permisos ese archivo no se pudiese modificar.  :???: 

Cuando comienzas "por primera vez" con Python. Muchos de los módulos que tu crees vas a tener que tenerlos "en el mismo lugar"
que el código que importa el modulo. Eso lo recuerda una y otra vez mucho de los libros que usan los que comienzan con Python.
Aunque exista la posibilidad de decirle "de donde" debe importarlo. Pero existen varias formas a cual más adecuada. Según la seriedad del proyecto.

Estoy creando un ejemplo con Gambas, pero me esta dando problemas ( a lo mejor una tontería).

He creado un proyecto que en su modulo contiene la función sumar.
Luego importo ese modulo creando desde el dialogo del formulario un enlace simbólico.

 [img]https://foro.gambas-es.org/files/images/768/ejemplo2conmodulos.png[/img] 

Y me encuentro el problema que "no puedo modificar" el modulo en el segundo proyecto.
Esta bloqueado. El candado a la derecha. ¿ Esto es normal ?.  :???: 

Gambas 3.11.2

Saludos


-----------------------------------
Shell
Martes, 26 Junio 2018, 12:37

Re: Equivalente Del Import De Python En Gambas.
-----------------------------------
Encontré información en el blog de Julio:

[url=https://cursogambas.blogspot.com/2015/04/reutilizacion-de-codigo-en.html]Reutilizar el código

Enlace simbólico, que no funciona como enlace simbólico... :???:
Si se modifica el original afecta al enlace.
Si se modifica el enlace afecta al original...

Al final habrá que hacerlo desde terminal o explorador de archivos... :roll:


-----------------------------------
shordi
Martes, 26 Junio 2018, 16:14

Re: Equivalente Del Import De Python En Gambas.
-----------------------------------
[quote] Ya se que Shordi seguramente dirá que eso esta bien para que sea mas seguro, pero la realidad es que cuando soy solo yo que toco los códigos de mi pc me parece una traba mas que una ayuda.[/quote]

Esa no es la realidad, la realidad es que si tienes un proyecto (o dos, o tres) que usa dicho código de hace tres o cuatro años, y lo modificas hoy porque se te ocurre que tal función en lugar de recibir un variant mejor recibe un string[] o lo que sea...  dejan de funcionar todos esos proyectos para que te funcione el nuevo.

 :mryellow:  :mryellow:  :mryellow:


-----------------------------------
jsbsan
Martes, 26 Junio 2018, 17:53

Re: Equivalente Del Import De Python En Gambas.
-----------------------------------
Tincho:

[quote]Así que si escribo unas funciones en gambas (nada de python ni C ni otro lenguaje) ¿Como las puedo "importar" a mi proyecto sin tener que usar el método de los enlaces o links del sistema de archivos? 
¿Como puedo implementar algo parecido a los que en python es el "import" en gambas con código gambas.?[/quote]
Creas un componente tipo "gb.miutilidades"


-----------------------------------
tincho
Jueves, 28 Junio 2018, 14:34

Re: Equivalente Del Import De Python En Gambas.
-----------------------------------
[quote user="Shell" post="42339"]...Esta bloqueado. El candado a la derecha. ¿ Esto es normal ?.  :???: [/quote]
Exacto !! a eso es a lo que me refería.
Así no me agrada para nada porque siempre estoy con dos o mas proyectos abiertos a la vez y, lo que me gustaría es cambiar algo en el módulo de funciones que usan los demas programas y luego probar que tal fue el cambio en una aplicacion y luego en otroa y así sucesivamente. Pero no va porque se bloquea y no se deja modificar.

Saludos.


-----------------------------------
tincho
Jueves, 28 Junio 2018, 14:48

Re: Equivalente Del Import De Python En Gambas.
-----------------------------------
[quote user="jsbsan" post="42343"]...Creas un componente tipo "gb.miutilidades"[/quote]
Ok, gracias nunca he creado un componente todavía. Lo mirare.
Pero si en el componente, que por ejemplo le ponga gb.reutil, hago otra versión de CDate, como deberia llamar la función desde el código si fuera el caso que en el proyecto estén los dos componentes cargados.

Saludos.


-----------------------------------
jsbsan
Jueves, 28 Junio 2018, 18:26

Re: Equivalente Del Import De Python En Gambas.
-----------------------------------
Tincho:

[quote] hago otra versión de CDate, como deberia llamar la función desde el código si fuera el caso que en el proyecto estén los dos componentes cargados.[/quote]
Creo que no te va a dejar poner el mismo nombre. Seguramente tendrás que poner otro nombre.


-----------------------------------
tincho
Miercoles, 04 Julio 2018, 14:09

Re: Equivalente Del Import De Python En Gambas.
-----------------------------------
[quote user="jsbsan" post="42360"]Tincho:

[quote] hago otra versión de CDate, como deberia llamar la función desde el código si fuera el caso que en el proyecto estén los dos componentes cargados.[/quote]
Creo que no te va a dejar poner el mismo nombre. Seguramente tendrás que poner otro nombre.[/quote]
ok. lo tendré en cuenta, gracias.
Saludos.


-----------------------------------
mckaygerhard
Martes, 10 Julio 2018, 22:36

Re: Equivalente Del Import De Python En Gambas.
-----------------------------------
[quote user="tincho" post="42358"][quote user="jsbsan" post="42343"]...Creas un componente tipo "gb.miutilidades"[/quote]
Ok, gracias nunca he creado un componente todavía. Lo mirare.
Pero si en el componente, que por ejemplo le ponga gb.reutil, hago otra versión de CDate, como deberia llamar la función desde el código si fuera el caso que en el proyecto estén los dos componentes cargados.

Saludos.[/quote]

Es fácil creas un proyecto normal pero en tipo de proyecto le pones "componente" o "librería", es mejor librería.

Después en tu archivo módulo en las primeras líneas colocas "Export" y listo, ya puedes reusar todo

Sobre el CDate como ya hay un Cdate simple, no habrá conflictos porque la tuya se usará con "<nombremodulo>.CDate(<argumento>)"


-----------------------------------
tincho
Viernes, 13 Julio 2018, 17:01

Re: Equivalente Del Import De Python En Gambas.
-----------------------------------
[quote user="mckaygerhard" post="42422"]Es fácil creas un proyecto normal pero en tipo de proyecto le pones "componente" o "librería", es mejor librería.
Después en tu archivo módulo en las primeras líneas colocas "Export" y listo, ya puedes reusar todo
Sobre el CDate como ya hay un Cdate simple, no habrá conflictos porque la tuya se usará con "<nombremodulo>.CDate(<argumento>)"[/quote]
Ok, muchas gracias.

Saludos.


