https://foro.gambas-es.org/viewtopic.php?f=16&t=3636
-----------------------------------
Shell
Jueves, 20 Febrero 2014, 13:47

[Python ] Importando Módulos Privados
-----------------------------------
Hola!.

Es algo habitual cuando hacemos un modulo, queremos aprovechar sus funciones en otro código.
Siempre tenemos que tener especificado en las variables del entorno del sistema la ruta donde estará
este modulo. Suponer que al principio tenemos todos los códigos en el mismo lugar.

Desde el propio Python, si haceis:
[code linenumbers=false syntax=python]
import sys
sys.path
[/code]
Nos mostrara todas las rutas donde Python va a buscar.
En mi caso me muestra esto:

[quote]
['/home/jack', '/usr/bin', '/home/jack/Programacion/CursoPythonCoursera/PracticasPython', '/usr/lib/python3.3', '/usr/lib/python3.3/plat-i386-linux-gnu', '/usr/lib/python3.3/lib-dynload', '/usr/local/lib/python3.3/dist-packages', '/usr/lib/python3/dist-packages']
[/quote]

Si en la propia consola de Linux queremos buscar la variable de entorno PYTHONPATH.
Podemos hacer:

[code linenumbers=false syntax=bash]
env | grep PYTHON
[/code]

En mi caso me responde:

[quote]
PYTHONPATH=/home/jack/Programacion/CursoPythonCoursera/PracticasPython/
[/quote]

Si no os aparece nada tenéis que añadir esa variable a las del entorno con su ruta.
http://es.wikipedia.org/wiki/Variable_de_entorno

Sigamos:
Si tenemos un modulo tal como este. En el que nos va a sumar dos números.

Este es el modulo que vamos a aprovechar su función suma
[code linenumbers=false syntax=python]
# Ejemplo para modulo. Este sera el modulo a importar

def suma(a,b):
    return (a + b)
[/code]

Acostumbrado al comenzar nuestro código es que usáramos:

[code linenumbers=false syntax=python]
import nombremodulo
[/code]

No esta mal, del todo, pero, al crear nuestro código de llamada al modulo como este:

[code linenumbers=false syntax=python]
# Con este ejemplo probaremos el modulosumar
print (suma(12,3))
[/code]

Nos va decir:
[quote]
NameError: name 'suma' is not defined
[/quote]

Pero lo mas curioso, [b]es que la ruta esta establecida correctamente[/b].

¿ Recordáis los módulos en Gambas ?

Pues bien. Al llamar a la función tendría que haber escrito:
[code linenumbers=false syntax=python]
# Con este ejemplo probaremos el modulosumar
print (modulosumar.suma(12,3))
[/code]

Eso es una solución. Si queremos algo mas estetico y solo para importar del modulosumar, la función suma, hacemos:
[code linenumbers=false syntax=python]
# Con este ejemplo probaremos el modulosumar

from modulosumar import suma

print (suma(12,3))
[/code]

¿ Y si al modulo que llamamos tiene mas funciones que nos interesa usar ?. Hacemos:

[code linenumbers=false syntax=python]
# Con este ejemplo probaremos el modulosumar

from modulosumar import *

print (suma(12,3))
[/code]

Y eso es todo, por ahora... :-)

Saludos


