file.py
包含一个名为 function
的函数。我如何导入它?
from file.py import function(a,b)
上面给出了一个错误:
ImportError:没有名为“file.py”的模块;文件不是包
from file import function
。无需文件扩展名或函数参数
file.py
导入函数,请确保您的目录中没有名称为 file
的包。
首先,从 file.py
导入 function
:
from file import function
稍后,使用以下命令调用该函数:
function(a, b)
请注意,file
是 Python 的核心模块之一,因此我建议您将 file.py
的文件名更改为其他名称。
请注意,如果您尝试将函数从 a.py
导入到名为 b.py
的文件中,则需要确保 a.py
和 b.py
位于同一目录中。
导入时不要写.py
。
让 file_a.py
在其中包含一些函数:
def f():
return 1
def g():
return 2
要将这些函数导入 file_z.py
,请执行以下操作:
from file_a import f, g
如果您的文件位于不同的包结构中并且您想从不同的包中调用它,那么您可以以这种方式调用它:
假设您的 python 项目中有以下包结构:
https://i.stack.imgur.com/lZONx.png
在 - 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
方法 1. 从 file.py 中导入您想要的特定函数:
from file import function
方法2.导入整个文件:
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
修理
ModuleNotFoundError:没有命名的模块
尝试在文件名前使用点 (.
) 进行相对导入:
from .file import function
.py 文件中的函数(可以(当然)在不同的目录中)可以通过先写入目录然后不带 .py 扩展名的文件名来简单地导入:
from directory_name.file_name import function_name
稍后使用:function_name()
将模块重命名为“文件”以外的名称。
然后还要确保在调用函数时:
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()
首先将文件保存为 .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
也没有用。谢谢你。
在 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
位于同一目录中
from .b import addFun
您不必添加 file.py
。
只需将文件与要导入的文件保存在同一位置即可。然后只需导入您的功能:
from file import a, b
解决方案 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 *
您应该将该文件与您尝试导入的 Python 文件的位置相同。 '从文件导入功能'也足够了。
上述任何解决方案都不适合我。我收到 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`
假设你要调用的文件是anotherfile.py,你要调用的方法是method1,那么先导入文件再导入方法
from anotherfile import method1
如果method1是一个类的一部分,让这个类是class1,那么
from anotherfile import class1
然后创建一个class1的对象,假设对象名是ob1,那么
ob1 = class1()
ob1.method1()
在我的情况下,我将我的文件命名为 helper.scrap.py
,但在更改为 helper.py
之前无法使其工作
在我的主脚本 detectiveROB.py
文件中,我需要调用 passGen
函数来生成密码哈希并且该函数在 modules\passwordGen.py
下
对我来说最快和最简单的解决方案是
下面是我的目录结构
https://i.stack.imgur.com/0fgBP.png
所以在 detectiveROB.py
我已经使用以下语法导入我的函数
from modules.passwordGen import passGen
https://i.stack.imgur.com/VNC1O.png
只是一个快速的建议,那些相信通过按 alt+ 自动导入的人进入 Pycharm 并且无法获得帮助。
只需通过以下方式更改要导入的文件名:右键单击文件并单击重构-> 重命名。您的自动导入选项将开始出现