Foros del Web » Programando para Internet » Python »

Import en Python

Estas en el tema de Import en Python en el foro de Python en Foros del Web. Hola a todos tengo una consulta tengo un archivo de python llamado uno.py he leido sobrel import en python y cree el siguiente dos.py dentro ...
  #1 (permalink)  
Antiguo 22/07/2011, 12:42
 
Fecha de Ingreso: julio-2011
Mensajes: 7
Antigüedad: 12 años, 9 meses
Puntos: 0
Import en Python

Hola a todos

tengo una consulta

tengo un archivo de python llamado uno.py

he leido sobrel import en python
y cree el siguiente dos.py dentro de este coloque

Código Python:
Ver original
  1. import sys
  2. sys.path.append("ruta donde esta el archivo uno.py")
  3. import uno

pero no me funciono
la idea es que el archivo dos llame a ejecucion al archivo uno

cual sera el problema?

Última edición por razpeitia; 22/07/2011 a las 13:32 Razón: Resaltado de sintaxis
  #2 (permalink)  
Antiguo 22/07/2011, 13:09
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 1 mes
Puntos: 1329
Respuesta: Import en Python

Si pones el archivo uno.py en el mismo directorio no necesitas las dos primeras lineas.

Código python:
Ver original
  1. #uno.py
  2. def funcion():
  3.     pass
  4.  
  5. #dos.py
  6. import uno
  7.  
  8. uno.funcion()

Recomiendo que leas sobre módulos y paquetes: http://mundogeek.net/archivos/2008/0...os-y-paquetes/

Saludos
__________________
Grupo Telegram Docker en Español
  #3 (permalink)  
Antiguo 22/07/2011, 13:31
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Import en Python

Esta apunto de escribir una respuesta similar pero decidi intentarlo antes en mi ubuntu.

Lo que pasa es que existe un modulo llamado uno que (la verdad no se si este por default) pero resulta que lo tenia instalado.

Esto es una colisión entre módulos. Pero para este ejemplo voy a necesitar explicar el path de python.

Python busca un modulo de una manera bastante común, nada de magia ni nada por el estilo.

Explicación:
Python tiene algo llamado PATH, lo puedes encontrar en el paquete sys, es una lista que se llama path.

Ahora cada vez que tu intentas importar un archivo lo que hace es recorer el path en búsqueda de un modulo. Así que empieza en sys.path[0], luego sys.path[1] hasta sys.path[-1]

Ahora si yo tengo mi path de la siguiente marea:
sys.path = ['/ruta/1', '/ruta/2']
Si tuviera un modulo llamado uno.py en /ruta/1 y /ruta/2 obviamente agarraría el modulo uno.py de /ruta/1 y no vería que existe otro archivo llamado uno.py en /ruta/2.

Y esto es exactamente lo que esta pasando.

Para arreglar eso (bajo tu propio riesgo) es insertar tu path en la primera posición.
Ejemplo:
Código Python:
Ver original
  1. import sys
  2. sys.path.insert(0, "ruta donde esta el archivo uno.py")
  3. import uno
  #4 (permalink)  
Antiguo 22/07/2011, 14:06
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 1 mes
Puntos: 1329
Respuesta: Import en Python

Probablemente me equivoque, pero recuerdo haber leído que primero antes de buscar en las direcciones del path de python busca en el mismo directorio de tu script. De hecho la primera dirección del path es ''

Ahora estoy en windows, pero deja reinicio y me paso a Ubuntu, por que en Windows me funciona sin problemas, tengo la versión 2.7.2.

EDITO: Ahora en Ubuntu sí encuentra el modulo uno, por lo que veo es para manejar documentos de OppenOffice, o algo por estilo. De cualquier manera no me genera ninguna colisión de módulos por lo que comenté antes.

Saludos
__________________
Grupo Telegram Docker en Español

Última edición por Carlangueitor; 22/07/2011 a las 14:23
  #5 (permalink)  
Antiguo 22/07/2011, 16:07
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Import en Python

@Carlangueitor: Acabo de leer la primer linea de tu mensaje, por alguna razón me pase directo a la segunda.

Si el primer directorio en buscar es el directorio donde esta siendo ejecutado.

Digo, si quiere tener sus módulos separadas en algún otro lugar es libre de hacerlo. Pero claro que esto tiene un costo al momento de cambiar las rutas o de pasarse a otra maquina. Lo mejor es organizar bien todo en módulos y paquetes. Si escribiste uno.py no veo por que no ponerlo en el mismo directorio que dos.py

Etiquetas: import
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:43.