Saltar al contenido

¿Cómo importar otros archivos de Python?

Hola usuario de nuestra página web, hemos encontrado la solución a tu búsqueda, continúa leyendo y la hallarás más abajo.

Solución:

Hay muchas formas de importar un archivo Python, todas con sus pros y sus contras.

No se apresure a elegir la primera estrategia de importación que funcione para usted o, de lo contrario, tendrá que volver a escribir el código base más adelante cuando descubra que no satisface sus necesidades.

Comenzaré explicando el ejemplo más sencillo n. ° 1, luego pasaré al ejemplo más profesional y sólido n. ° 7

Ejemplo 1, importar un módulo de Python con un intérprete de Python:

  1. Pon esto en /home/el/foo/fox.py:

    def what_does_the_fox_say():
      print("vixens cry")
    
  2. Entra en el intérprete de Python:

    [email protected]:/home/el/foo$ python
    Python 2.7.3 (default, Sep 26 2013, 20:03:06) 
    >>> import fox
    >>> fox.what_does_the_fox_say()
    vixens cry
    >>> 
    

    Importó fox a través del intérprete de python, invocó la función de python what_does_the_fox_say() desde dentro de fox.py.

Ejemplo 2, uso execfile o (exec en Python 3) en un script para ejecutar el otro archivo de Python en su lugar:

  1. Pon esto en /home/el/foo2/mylib.py:

    def moobar():
      print("hi")
    
  2. Pon esto en /home/el/foo2/main.py:

    execfile("/home/el/foo2/mylib.py")
    moobar()
    
  3. ejecutar el archivo:

    [email protected]:/home/el/foo$ python main.py
    hi
    

    La función moobar se importó de mylib.py y se puso a disposición en main.py

Ejemplo 3, Usar desde … importar … funcionalidad:

  1. Pon esto en /home/el/foo3/chekov.py:

    def question():
      print "where are the nuclear wessels?"
    
  2. Pon esto en /home/el/foo3/main.py:

    from chekov import question
    question()
    
  3. Ejecútelo así:

    [email protected]:/home/el/foo3$ python main.py 
    where are the nuclear wessels?
    

    Si definió otras funciones en chekov.py, no estarán disponibles a menos que import *

Ejemplo 4, importar riaa.py si está en una ubicación de archivo diferente de donde se importa

  1. Pon esto en /home/el/foo4/stuff/riaa.py:

    def watchout():
      print "computers are transforming into a noose and a yoke for humans"
    
  2. Pon esto en /home/el/foo4/main.py:

    import sys 
    import os
    sys.path.append(os.path.abspath("/home/el/foo4/stuff"))
    from riaa import *
    watchout()
    
  3. Ejecutarlo:

    [email protected]:/home/el/foo4$ python main.py 
    computers are transforming into a noose and a yoke for humans
    

    Eso importa todo en el archivo externo desde un directorio diferente.

Ejemplo 5, utilice os.system("python yourfile.py")

import os
os.system("python yourfile.py")

Ejemplo 6, importe su archivo a través del gancho de inicio de Python:

Actualizar: Este ejemplo solía funcionar tanto para python2 como para 3, pero ahora solo funciona para python2. python3 se deshizo de este conjunto de características de startuphook de usuario porque fue abusado por escritores de bibliotecas de Python poco hábiles, usándolo para inyectar descortésmente su código en el espacio de nombres global, antes que todos los programas definidos por el usuario. Si desea que esto funcione para python3, tendrá que ser más creativo. Si le digo cómo hacerlo, los desarrolladores de Python también deshabilitarán ese conjunto de funciones, por lo que estará solo.

Ver: https://docs.python.org/2/library/user.html

Pon este código en tu directorio personal en ~/.pythonrc.py

class secretclass:
    def secretmessage(cls, myarg):
        return myarg + " is if.. up in the sky, the sky"
    secretmessage = classmethod( secretmessage )

    def skycake(cls):
        return "cookie and sky pie people can't go up and "
    skycake = classmethod( skycake )

Pon este código en tu main.py (puede estar en cualquier lugar):

import user
msg = "The only way skycake tates good" 
msg = user.secretclass.secretmessage(msg)
msg += user.secretclass.skycake()
print(msg + " have the sky pie! SKYCAKE!")

Ejecútelo, debería obtener esto:

$ python main.py
The only way skycake tates good is if.. up in the sky, 
the skycookie and sky pie people can't go up and  have the sky pie! 
SKYCAKE!

Si recibe un error aquí: ModuleNotFoundError: No module named 'user' entonces significa que está usando python3, los startuphooks están deshabilitados allí de forma predeterminada.

El crédito por este jist va a: https://github.com/docwhat/homedir-examples/blob/master/python-commandline/.pythonrc.py Envíe sus up-boats.

Ejemplo 7, más robusto: importe archivos en python con el comando de importación simple:

  1. Crea un nuevo directorio /home/el/foo5/
  2. Crea un nuevo directorio /home/el/foo5/herp
  3. Crea un archivo vacío con el nombre __init__.py bajo herp:

    [email protected]:/home/el/foo5/herp$ touch __init__.py
    [email protected]:/home/el/foo5/herp$ ls
    __init__.py
    
  4. Cree un nuevo directorio / home / el / foo5 / herp / derp

  5. Bajo derp, haz otro __init__.py expediente:

    [email protected]:/home/el/foo5/herp/derp$ touch __init__.py
    [email protected]:/home/el/foo5/herp/derp$ ls
    __init__.py
    
  6. En / home / el / foo5 / herp / derp crea un nuevo archivo llamado yolo.py Pon esto ahí:

    def skycake():
      print "SkyCake evolves to stay just beyond the cognitive reach of " +
      "the bulk of men. SKYCAKE!!"
    
  7. El momento de la verdad, haz el nuevo archivo /home/el/foo5/main.py, pon esto ahí;

    from herp.derp.yolo import skycake
    skycake()
    
  8. Ejecutarlo:

    [email protected]:/home/el/foo5$ python main.py
    SkyCake evolves to stay just beyond the cognitive reach of the bulk 
    of men. SKYCAKE!!
    

    El vacío __init__.py file comunica al intérprete de Python que el desarrollador pretende que este directorio sea un paquete importable.

Si desea ver mi publicación sobre cómo incluir TODOS los archivos .py en un directorio, consulte aquí: https://stackoverflow.com/a/20753073/445131

importlib se agregó a Python 3 para importar un módulo mediante programación.

import importlib

moduleName = input('Enter module name:')
importlib.import_module(moduleName)

La extensión .py debe eliminarse de moduleName. La función también define un package argumento a favor de las importaciones relativas.

En python 2.x:

  • Solo import file sin la extensión .py
  • Una carpeta se puede marcar como un paquete, agregando un __init__.py expediente
  • Puedes usar el __import__ función, que toma el nombre del módulo (sin extensión) como una string extensión
pmName = input('Enter module name:')
pm = __import__(pmName)
print(dir(pm))

Escribe help(__import__) para más detalles.

Para importar un archivo Python específico en ‘tiempo de ejecución’ con un nombre conocido:

import os
import sys

scriptpath = "../Test/"

# Add the directory containing your module to the Python path (wants absolute paths)
sys.path.append(os.path.abspath(scriptpath))

# Do the import
import MyModule

Aquí tienes las comentarios y valoraciones

Si crees que ha resultado provechoso este artículo, sería de mucha ayuda si lo compartieras con el resto programadores y nos ayudes a difundir esta información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *