Llama a una función desde otro archivo en Python

Configuración: Tengo un archivo .py para cada función que necesito usar en un progtwig.

En este progtwig, necesito llamar a la función desde los archivos externos.

He intentado:

from file.py import function(a,b) 

Pero me sale el error:

ImportError: Ningún módulo llamado ‘archivo.py’; el archivo no es un paquete

    ¿Cómo soluciono este problema?

    No es necesario agregar file.py al importar. Simplemente escriba from file import function y luego llame a la función usando la function(a, b) . La razón por la que esto puede no funcionar, es porque el file es uno de los módulos centrales de Python, por lo que le sugiero que cambie el nombre de su archivo.

    Tenga en cuenta que si está intentando importar funciones de a.py a un archivo llamado b.py , deberá asegurarse de que a.py y b.py estén en el mismo directorio.

    En primer lugar no necesitas un .py .

    Si tienes un archivo a.py y dentro tienes algunas funciones:

     def b(): # Something return 1 def c(): # Something return 2 

    Y quieres importarlos en z.py tienes que escribir

     from a import b, c 

    Puedes hacer esto de 2 maneras. Lo primero es solo importar la función específica que desea de file.py. Para hacer este uso

     from file import function 

    Otra forma es importar el archivo completo.

     import file as fl 

    Entonces puedes llamar a cualquier función dentro de file.py usando

     fl.function(a,b) 

    También puede llamar a la función desde un directorio diferente, en caso de que no pueda o no quiera tener la función en el mismo directorio en el que está trabajando. Puedes hacerlo de dos maneras (quizás haya más alternativas, pero estas son las que me han funcionado).

    Alternativa 1 Cambia temporalmente tu directorio de trabajo

     import os os.chdir("**Put here the directory where you have the file with your function**") from file import function os.chdir("**Put here the directory where you were working**") 

    Alternativa 2 Agregue el directorio donde tiene su función a sys.path

     import sys sys.path.append("**Put here the directory where you have the file with your function**") from file import function 

    Primero guarde el archivo en formato .py (por ejemplo, my_example.py ). Y si ese archivo tiene funciones,

     def xyz(): -------- -------- def abc(): -------- -------- 

    En la función de llamada solo tienes que escribir las siguientes líneas.

    nombre_archivo: mi_ejemplo2.py

    ============================

     import my_example.py a = my_example.xyz() b = my_example.abc() 

    ============================

    Encontré la misma función pero tuve que hacer lo siguiente para que funcione.

    Si está viendo ‘ModuleNotFoundError: No hay un módulo llamado’, es probable que necesite el punto (.) Delante del nombre de archivo como se muestra a continuación;

    desde .file import funtion

    No tienes que agregar file.py

    Simplemente mantenga el archivo en la misma ubicación que el archivo desde donde lo quiere importar. Luego solo importa tus funciones:

     from file import a, b 

    Cambie el nombre del módulo a otro que no sea ‘archivo’.

    Entonces, también asegúrate de llamar a la función que:

    1) si está importando el módulo completo, reitere el nombre del módulo cuando lo llame:

     import module module.function_name() 

    o

     import pizza pizza.pizza_function() 

    2) o si está importando funciones específicas, funciones con un alias, o todas las funciones usando *, no reitera el nombre del módulo:

     from pizza import pizza_function pizza_function() 

    o

     from pizza import pizza_function as pf pf() 

    o

     from pizza import * pizza_function() 

    Dentro de MathMethod.Py.

     def Add(a,b): return a+b def subtract(a,b): return ab 

    Dentro de Main.Py

     import MathMethod as MM print(MM.Add(200,1000)) 

    Salida: 1200

    Debe tener el archivo en la misma ubicación que la de los archivos de Python que está intentando importar. También ‘de la función de importación de archivos’ es suficiente.

    Si su archivo está en la estructura del paquete diferente y desea llamarlo desde un paquete diferente, entonces puede llamarlo de esa manera:

    Digamos que tienes la siguiente estructura de paquetes en tu proyecto python:

    Paquete Python y estructura de archivos.

    com.my.func.DifferentFunctioncom.my.func.DifferentFunction Python tiene alguna función, como:

     def add(arg1, arg2): return arg1 + arg2 def sub(arg1, arg2) : return arg1 - arg2 def mul(arg1, arg2) : return arg1 * arg2 

    Y desea llamar a diferentes funciones de Example3.py , luego de la siguiente manera puede hacerlo:

    Defina la statement de importación en Example3.py – archivo para importar todas las funciones

     from com.my.func.DifferentFunction import * 

    o define cada nombre de función que quieras importar

     from com.my.func.DifferentFunction import add, sub, mul 

    Luego, en Example3.py puedes llamar a la función para ejecutar:

     num1 = 20 num2 = 10 print("\n add : ", add(num1,num2)) print("\n sub : ", sub(num1,num2)) print("\n mul : ", mul(num1,num2)) 

    Salida:

      add : 30 sub : 10 mul : 200 

    en mi caso nombré mi archivo helper.scrap.py y no pude hacerlo funcionar hasta que cambié a helper.py

    Supongamos que el archivo al que desea llamar es otro archivo.py y que el método al que desea llamar es el método 1, primero importe el archivo y luego el método.

     from anotherfile import method1 

    si method1 es parte de una clase, deje que la clase sea class1, entonces

     from anotherfile import class1 

    luego cree un objeto de clase1, suponga que el nombre del objeto es ob1, entonces

     ob1 = class1() ob1.method1()