Set_up:我有一个.py文件,用于我需要在程序中使用的每个函数。
在这个程序中,我需要从外部文件中调用该函数。
我试过了:
from file.py import function(a,b)
但我收到错误:
ImportError:没有名为'file.py'的模块;文件不是包
如何解决此问题?
答案 0 :(得分:400)
导入时无需添加file.py
。只需编写from file import function
,然后使用function(a, b)
调用该函数。这可能不起作用的原因是因为file
是Python的核心模块之一,所以我建议你更改文件的名称。
请注意,如果您尝试将a.py
中的函数导入名为b.py
的文件,则需要确保a.py
和b.py
位于同一目录。
答案 1 :(得分:146)
首先,您不需要.py
。
如果你有一个文件a.py
并且里面有一些功能:
def b():
# Something
return 1
def c():
# Something
return 2
您想要在z.py
中导入它们
from a import b, c
答案 2 :(得分:36)
您可以通过两种方式完成此操作。首先只是从file.py导入你想要的特定功能。为此,请使用
from file import function
另一种方法是导入整个文件
import file as fl
然后你可以使用
调用file.py中的任何函数fl.function(a,b)
答案 3 :(得分:13)
您也可以从不同的目录中调用该函数,以防您不能或不想将该函数放在您正在使用的同一目录中。你可以用两种方式做到这一点(也许有更多的选择,但这些对我有用)。
备选方案1 暂时更改您的工作目录
LastRow = Application.WorksheetFunction.CountA(Sheet1.Range("A:A"))
备选方案2 将具有函数的目录添加到sys.path
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**")
答案 4 :(得分:10)
首先以.py格式保存文件(例如,my_example.py
)。
如果该文件有功能,
def xyz():
--------
--------
def abc():
--------
--------
在调用函数中,您只需键入以下行。
file_name:my_example2.py
============================
import my_example.py
a = my_example.xyz()
b = my_example.abc()
============================
答案 5 :(得分:10)
可以使用相同的功能,但是我必须执行以下操作才能使其正常工作。
如果看到“ ModuleNotFoundError:未命名模块”,则可能需要在文件名前面加点号(。),如下所示;
来自 .file 导入功能
答案 6 :(得分:5)
您不必添加file.py
。
只需将文件与要导入文件的文件保持在同一位置即可。然后只需导入你的功能:
from file import a, b
答案 7 :(得分:5)
将模块重命名为“文件”以外的其他名称。
然后还要确保在调用该函数时:
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()
答案 8 :(得分:4)
Inside 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))
输出:1200
答案 9 :(得分:4)
如果您的文件位于不同的包结构中,并且您想从其他包中调用它,则可以按照以下方式调用它:
假设您在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
中定义import语句-用于导入所有功能的文件
from com.my.func.DifferentFunction import *
或定义要导入的每个函数名称
from com.my.func.DifferentFunction import add, sub, mul
然后在Example3.py
中,您可以调用函数执行:
num1 = 20
num2 = 10
print("\n add : ", add(num1,num2))
print("\n sub : ", sub(num1,num2))
print("\n mul : ", mul(num1,num2))
输出:
add : 30
sub : 10
mul : 200
答案 10 :(得分:3)
如果要导入该文件(在运行代码的目录中),请在文件名前附加一个点(。)。
例如,我正在运行一个名为a.py的文件,我想导入一个名为addFun的方法,该方法用b.py编写,并且b.py在同一目录中
从.b导入addFun
答案 11 :(得分:2)
您应该将文件放在与您尝试导入的Python文件相同的位置。 “来自文件导入功能”就足够了。
答案 12 :(得分:1)
在我的情况下,我将文件命名为helper.scrap.py
,直到我更改为helper.py
答案 13 :(得分:1)
以上任何解决方案都不适合我。我遇到了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`
答案 14 :(得分:0)
假设您要调用的文件是anotherfile.py,并且要调用的方法是method1,然后首先导入文件然后导入方法
from anotherfile import method1
如果method1是类的一部分,那么让类为class1,然后是
from anotherfile import class1
然后创建class1的对象,假设对象名称是ob1,然后是
ob1 = class1()
ob1.method1()
答案 15 :(得分:0)
.py文件中的功能(可以(当然)可以在不同目录中)可以通过首先写入目录,然后输入不带.py扩展名的文件名来简单地导入:
from directory_name.file_name import function_name
稍后使用:function_name()
答案 16 :(得分:0)