设置:我需要在程序中使用每个函数的.py文件。
在此程序中,我需要从外部文件调用该函数。
我试过了:
from file.py import function(a,b)
但是我得到了错误:
ImportError:没有名为“ file.py”的模块;文件不是包
我该如何解决这个问题?
file.py
,请确保目录中没有名称为的软件包file
。
设置:我需要在程序中使用每个函数的.py文件。
在此程序中,我需要从外部文件调用该函数。
我试过了:
from file.py import function(a,b)
但是我得到了错误:
ImportError:没有名为“ file.py”的模块;文件不是包
我该如何解决这个问题?
file.py
,请确保目录中没有名称为的软件包file
。
Answers:
file.py
导入时无需添加任何内容。只需编写from file import function
,然后使用调用函数function(a, b)
。之所以可能不起作用,是因为它file
是Python的核心模块之一,所以我建议您更改文件名。
请注意,如果您尝试将函数从导入a.py
到名为的文件中b.py
,则需要确保a.py
和b.py
处于同一目录中。
首先,您不需要.py
。
如果您有文件a.py
并且内部有一些功能:
def b():
# Something
return 1
def c():
# Something
return 2
而您要导入它们,z.py
您必须编写
from a import b, c
您可以通过2种方式执行此操作。首先只是从file.py导入所需的特定功能。为此使用
from file import function
另一种方法是导入整个文件
import file as fl
然后您可以使用以下命令在file.py中调用任何函数
fl.function(a,b)
如果您不能或不想在正在使用的同一目录中使用该函数,也可以从其他目录中调用该函数。您可以通过两种方式来做到这一点(也许还有更多选择,但这是对我有用的选择)。
备选方案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
如果您的文件位于不同的包结构中,并且您想从其他包中调用它,则可以按照以下方式调用它:
假设您在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("\n add : ", add(num1,num2))
print("\n sub : ", sub(num1,num2))
print("\n mul : ", mul(num1,num2))
输出:
add : 30
sub : 10
mul : 200
首先以.py格式保存文件(例如my_example.py
)。如果该文件具有功能,
def xyz():
--------
--------
def abc():
--------
--------
在调用函数中,您只需要键入以下几行。
文件名:my_example2.py
===========================
import my_example.py
a = my_example.xyz()
b = my_example.abc()
===========================
import fn
(不带扩展名)并直接在主文件上使用它们fn.my_funcion()
。当我import fn.py
尝试加载py.py文件时,不存在。使用from fn.py import funcname
也不起作用。谢谢。
将模块重命名为“文件”以外的名称。
然后还要确保在调用函数时:
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()
在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
如果要导入此文件,请在文件名前附加一个点(。),该文件与运行代码的目录相同。
例如,我正在运行一个名为a.py的文件,我想导入一个名为addFun的方法,该方法是用b.py编写的,而b.py在同一目录中
从.b import addFun
from file import function
。无需文件扩展名或功能参数