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:
-
Pon esto en /home/el/foo/fox.py:
def what_does_the_fox_say(): print("vixens cry")
-
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:
-
Pon esto en /home/el/foo2/mylib.py:
def moobar(): print("hi")
-
Pon esto en /home/el/foo2/main.py:
execfile("/home/el/foo2/mylib.py") moobar()
-
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:
-
Pon esto en /home/el/foo3/chekov.py:
def question(): print "where are the nuclear wessels?"
-
Pon esto en /home/el/foo3/main.py:
from chekov import question question()
-
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
-
Pon esto en /home/el/foo4/stuff/riaa.py:
def watchout(): print "computers are transforming into a noose and a yoke for humans"
-
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()
-
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:
- Crea un nuevo directorio
/home/el/foo5/
- Crea un nuevo directorio
/home/el/foo5/herp
-
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
-
Cree un nuevo directorio / home / el / foo5 / herp / derp
-
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
-
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!!"
-
El momento de la verdad, haz el nuevo archivo
/home/el/foo5/main.py
, pon esto ahí;from herp.derp.yolo import skycake skycake()
-
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.