Een functie aanroepen vanuit een ander bestand?

Set_up: ik heb een .py-bestand voor elke functie die ik in een programma moet gebruiken.

In dit programma moet ik de functie aanroepen vanuit de externe bestanden.

Ik heb het geprobeerd:

from file.py import function(a,b)

Maar ik krijg de foutmelding:

ImportError: Geen module met de naam ‘file.py’; bestand is geen pakket

Hoe los ik dit probleem op?


Antwoord 1, autoriteit 100%

Het is niet nodig om file.pytoe te voegen tijdens het importeren. Schrijf gewoon from file import functionen roep de functie vervolgens aan met behulp van function(a, b). De reden waarom dit misschien niet werkt, is omdat fileeen van de kernmodules van Python is, dus ik raad je aan de naam van je bestand te wijzigen.

Houd er rekening mee dat als u functies probeert te importeren van a.pynaar een bestand met de naam b.py, u ervoor moet zorgen dat a.pyen b.pybevinden zich in dezelfde map.


Antwoord 2, autoriteit 35%

Allereerst heb je geen .pynodig.

Als je een bestand a.pyhebt en binnenin heb je enkele functies:

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

En als je ze wilt importeren in z.pymoet je schrijven

from a import b, c

Antwoord 3, autoriteit 11%

Je kunt dit op 2 manieren doen. De eerste is om de specifieke functie die u wilt importeren uit file.py. Gebruik hiervoor

from file import function

Een andere manier is om het hele bestand te importeren

import file as fl

Dan kun je elke functie in file.py aanroepen met

fl.function(a,b)

Antwoord 4, autoriteit 9%

Als uw bestand zich in een andere pakketstructuur bevindt en u het vanuit een ander pakket wilt aanroepen, kunt u het op die manier aanroepen:

Stel dat je de volgende pakketstructuur in je python-project hebt:

in – com.my.func.DifferentFunctionpython-bestand heb je een functie, zoals:

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

En je wilt verschillende functies aanroepen vanuit Example3.py, en dan kun je dat op de volgende manier doen:

Definieer importinstructie in Example3.py– bestand voor import alle functie

from com.my.func.DifferentFunction import *

of definieer elke functienaam die u wilt importeren

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

Vervolgens kun je in Example3.pyde functie voor execute aanroepen:

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

Uitvoer:

add :  30
 sub :  10
 mul :  200

Antwoord 5, autoriteit 7%

U kunt de functie ook vanuit een andere directory aanroepen, voor het geval u de functie niet in dezelfde directory kunt of wilt hebben als u werkt. Je kunt dit op twee manieren doen (misschien zijn er meer alternatieven, maar dit zijn degenen die voor mij hebben gewerkt).

Alternatief 1
Wijzig tijdelijk uw werkmap

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**")

Alternatief 2
Voeg de map waar je je functie hebt toe aan sys.path

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

Antwoord 6, autoriteit 4%

Ik kwam dezelfde functie tegen, maar ik moest het onderstaande doen om het te laten werken.

Als je ‘ModuleNotFoundError: No module named’ ziet, heb je waarschijnlijk de punt(.) voor de bestandsnaam nodig, zoals hieronder;

uit .fileimportfunctie


Antwoord 7, autoriteit 3%

Functies uit het .py-bestand (kunnen (uiteraard) in een andere directory staan) kunnen eenvoudig worden geïmporteerd door eerst directory’s te schrijven en vervolgens de bestandsnaam zonder .py-extensie:

from directory_name.file_name import function_name

En later te gebruiken: function_name()


Antwoord 8, autoriteit 2%

Hernoem de module naar iets anders dan ‘bestand’.

Zorg er dan ook voor wanneer u de functie belt die:

1) Als u de volledige module importeert, herhaalt u de naam van de module wanneer u het belt:

import module
module.function_name()

of

import pizza
pizza.pizza_function()

2) Of als u specifieke functies importeert, functioneert met een alias of alle functies met *, herhaalt u de naam van de module niet:

from pizza import pizza_function
pizza_function()

of

from pizza import pizza_function as pf
pf()

of

from pizza import *
pizza_function()

Antwoord 9, Autoriteit 2%

Sla eerst het bestand op in. Py-indeling (bijvoorbeeld my_example.py).
En als dat bestand functies hebben,

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

In de oproepfunctie hoeft u de onderstaande regels te typen.

FILE_NAME: MY_EXAMPLE2.PY

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

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

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


Antwoord 10

binnenkant mathmethod.py.

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

Inside Main.py

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

Uitvoer:1200


Antwoord 11

U hoeft file.pyniet toe te voegen.

Bewaar het bestand gewoon op dezelfde locatie als het bestand van waaruit u het wilt importeren. Importeer dan gewoon je functies:

from file import a, b

Antwoord 12

Je zou het bestand op dezelfde locatie moeten hebben als die van de Python-bestanden die je probeert te importeren. Ook ‘van bestand import functie’ is voldoende.


Antwoord 13

voeg een punt toe .voor een bestandsnaam als u dit bestand wilt importeren dat zich in dezelfde map bevindt als waar u uw code uitvoert.

Ik voer bijvoorbeeld een bestand uit met de naam a.pyen ik wil een methode importeren met de naam addFundie is geschreven in b.py, en b.pybevindt zich in dezelfde map

from .b import addFun

Antwoord 14

Een van de bovenstaande oplossingen werkte niet voor mij. Ik kreeg ModuleNotFoundError: No module named whteverfout.
Dus mijn oplossing importeerde zoals hieronder

from . import filename # without .py  

in mijn eerste bestand heb ik functie fun gedefinieerd zoals hieronder

# file name is firstFile.py
def fun():
  print('this is fun')

laten we in het tweede bestand zeggen dat ik de functie leuk wil noemen

from . import firstFile
def secondFunc():
   firstFile.fun() # calling `fun` from the first file
secondFunc() # calling the function `secondFunc` 

Antwoord 15

Stel dat het bestand dat u wilt bellen AnyFile.py en de methode die u wilt bellen, is methode1 en importeer eerst het bestand en vervolgens de methode

from anotherfile import method1

Als methode1 deel uitmaakt van een klas, laat de klas klasse1 zijn, dan

from anotherfile import class1

Maak vervolgens een object van klasse1 aan, stel aan dat de objectnaam OB1 is, dan

ob1 = class1()
ob1.method1()

Antwoord 16

In mijn geval heb ik mijn bestand helper.scrap.pygenoemd en kon het niet laten werken totdat ik gewijzigd in helper.py


Antwoord 17

In mijn hoofdscript detectiveROB.pyBestand Ik heb een oproep nodig passGenFUNCTION DIE WACHTWOORD HASH GENOON EN DAT FUNCTIES ONDER modules\passwordGen.py

De snelste en gemakkelijkste oplossing voor mij is

Hieronder is mijn directorystructuur

Dus in detectiveROB.pyik heb mijn functie importeren met onderstaande syntaxis

from modules.passwordGen import passGen

Other episodes