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.py
toe te voegen tijdens het importeren. Schrijf gewoon from file import function
en roep de functie vervolgens aan met behulp van function(a, b)
. De reden waarom dit misschien niet werkt, is omdat file
een 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.py
naar een bestand met de naam b.py
, u ervoor moet zorgen dat a.py
en b.py
bevinden zich in dezelfde map.
Antwoord 2, autoriteit 35%
Allereerst heb je geen .py
nodig.
Als je een bestand a.py
hebt en binnenin heb je enkele functies:
def b():
# Something
return 1
def c():
# Something
return 2
En als je ze wilt importeren in z.py
moet 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.DifferentFunction
python-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.py
de 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.py
niet 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.py
en ik wil een methode importeren met de naam addFun
die is geschreven in b.py
, en b.py
bevindt 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 whtever
fout.
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.py
genoemd en kon het niet laten werken totdat ik gewijzigd in helper.py
Antwoord 17
In mijn hoofdscript detectiveROB.py
Bestand Ik heb een oproep nodig passGen
FUNCTION 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.py
ik heb mijn functie importeren met onderstaande syntaxis
from modules.passwordGen import passGen