如何从另一个 .py 文件调用函数?[重复]
- 2024-12-13 08:36:00
- admin 原创
- 125
问题描述:
file.py
包含一个名为 的函数function
。如何导入它?
from file.py import function(a,b)
上面给出了一个错误:
ImportError:没有名为“file.py”的模块;文件不是包
解决方案 1:
首先,function
从以下位置导入file.py
:
from file import function
稍后,使用以下命令调用该函数:
function(a, b)
请注意,这file
是 Python 的核心模块之一,因此我建议您将文件名更改file.py
为其他名称。
请注意,如果您尝试将函数从导入a.py
到名为的文件中b.py
,则需要确保a.py
和b.py
位于同一目录中。
解决方案 2:
导入的时候不要写.py
。
让它file_a.py
包含一些函数:
def f():
return 1
def g():
return 2
要将这些函数导入file_z.py
,请执行以下操作:
from file_a import f, g
解决方案 3:
如果您的文件位于不同的包结构中,并且您想从不同的包中调用它,那么您可以按照以下方式调用它:
假设你的 Python 项目中有以下包结构:
在com.my.func.DifferentFunction
python 文件中有一些函数,例如:
def add(arg1, arg2):
return arg1 + arg2
def sub(arg1, arg2) :
return arg1 - arg2
def mul(arg1, arg2) :
return arg1 * arg2
并且您想从中调用不同的函数Example3.py
,那么您可以按照以下方式操作:
Example3.py
在文件中定义导入语句以导入所有函数
from com.my.func.DifferentFunction import *
或者定义要导入的每个函数名称
from com.my.func.DifferentFunction import add, sub, mul
然后Example3.py
你可以调用函数来执行:
num1 = 20
num2 = 10
print("
add : ", add(num1,num2))
print("
sub : ", sub(num1,num2))
print("
mul : ", mul(num1,num2))
输出:
add : 30
sub : 10
mul : 200
解决方案 4:
方法 1.从 file.py 导入所需的特定函数:
from file import function
方法2. 导入整个文件:
import file as fl
然后,要调用 file.py 内的任何函数,请使用:
fl.function(a, b)
解决方案 5:
如果您不能或不想将函数放在您正在工作的目录中,您也可以从不同的目录调用该函数。您可以通过两种方式做到这一点(也许还有更多的选择,但这些是对我来说有效的)。
方案 1 临时更改你的工作目录
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**")
备选方案 2 将函数所在目录添加到 sys.path
import sys
sys.path.append("**Put here the directory where you have the file with your function**")
from file import function
解决方案 6:
修复
ModuleNotFoundError:没有命名的模块
.
尝试在文件名前使用点 ( ) 进行相对导入:
from .file import function
解决方案 7:
可以简单地通过先写目录然后写不带 .py 扩展名的文件名来导入 .py 文件中的函数(当然可以位于不同的目录中):
from directory_name.file_name import function_name
稍后使用:function_name()
解决方案 8:
将模块重命名为“文件”以外的其他名称。
然后,在调用该函数时还要确保:
1)如果要导入整个模块,则在调用时重申模块名称:
import module
module.function_name()
或者
import pizza
pizza.pizza_function()
2)或者,如果您要导入特定函数、具有别名的函数或使用 * 的所有函数,则无需重申模块名称:
from pizza import pizza_function
pizza_function()
或者
from pizza import pizza_function as pf
pf()
或者
from pizza import *
pizza_function()
解决方案 9:
首先将文件保存为 .py 格式(例如my_example.py
)。如果该文件有函数,
def xyz():
--------
--------
def abc():
--------
--------
在调用函数中您只需输入以下几行。
文件名:my_example2.py
============================
import my_example.py
a = my_example.xyz()
b = my_example.abc()
============================
解决方案 10:
.
如果您想要导入位于运行代码的同一目录中的文件,请在文件名前面添加一个点。
例如,我正在运行一个名为的文件a.py
,我想导入一个名为的方法addFun
,该方法写在 中b.py
,并且b.py
位于同一目录中
from .b import addFun
解决方案 11:
在 MathMethod.Py 内部。
def Add(a,b):
return a+b
def subtract(a,b):
return a-b
Main.Py 内部
import MathMethod as MM
print(MM.Add(200,1000))
产量:1200
解决方案 12:
您不必添加file.py
。
只需将文件保存在与要导入的文件相同的位置即可。然后只需导入您的函数:
from file import a, b
解决方案 13:
解决方案1:在一个文件中myfun.py
定义任意函数。
# functions
def Print_Text():
print( 'Thank You')
def Add(a,b):
c=a+b
return c
在另一个文件中:
#Import defined functions
from myfun import *
#Call functions
Print_Text()
c=Add(1,2)
解决方案 2:如果上述解决方案对 Colab 不起作用
创建文件夹
myfun
在此文件夹中创建一个文件
__init__.py
将所有函数写入
__init__.py
从 Colab 笔记本导入您的函数
from myfun import *
解决方案 14:
该文件应位于与要导入的 Python 文件相同的位置。“从文件导入函数”也足够了。
解决方案 15:
上述任何解决方案都不适合我。我收到ModuleNotFoundError: No module named whtever
错误。所以我的解决方案是像下面这样导入
from . import filename # without .py
在我的第一个文件中我定义了函数 fun 如下
# file name is firstFile.py
def fun():
print('this is fun')
在第二个文件中,假设我想调用函数 fun
from . import firstFile
def secondFunc():
firstFile.fun() # calling `fun` from the first file
secondFunc() # calling the function `secondFunc`
解决方案 16:
假设要调用的文件是 anotherfile.py,要调用的方法是 method1,则首先导入该文件,然后导入方法
from anotherfile import method1
如果 method1 是某个类的一部分,设该类为 class1,则
from anotherfile import class1
然后创建一个class1的对象,假设对象名为ob1,那么
ob1 = class1()
ob1.method1()
解决方案 17:
在我的情况下,我命名了我的文件helper.scrap.py
,但无法让它工作,直到我改为helper.py
解决方案 18:
在我的主脚本detectiveROB.py
文件中,我需要调用passGen
生成密码哈希的函数,该函数位于modulespasswordGen.py
对我来说最快捷、最简单的解决方案是
下面是我的目录结构
因此detectiveROB.py
我使用以下语法导入了我的函数
from modules.passwordGen import passGen
解决方案 19:
只是一个简单的建议,那些相信通过在 Pycharm 中按 alt+enter 进行自动导入的人无法获得帮助。
只需更改要导入的文件名即可:右键单击文件,然后单击“重构”->“重命名”。自动导入选项将开始出现