File.py包含一个名为function的函数。如何导入?

from file.py import function(a,b)

上面给出了一个错误:

ImportError:没有名为'file.py'的模块;文件不是包


首先,从file.py导入函数:

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

首先将文件保存为.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()

============================


您应该将该文件置于与您试图导入的Python文件相同的位置。'from file import function'也足够了。


你不需要添加file.py。

只要将该文件与要导入的文件放在相同的位置即可。然后导入你的函数:

from file import a, b

方法1。从file.py导入你想要的特定函数:

from file import function

方法2。导入整个文件:

import file as fl

然后,调用file.py中的任何函数,使用:

fl.function(a, b)

假设你想调用的文件是anotherfile.py,你想调用的方法是method1,那么首先导入文件,然后导入方法

from anotherfile import method1

如果method1是一个类的一部分,那么这个类是class1,那么

from anotherfile import class1

然后创建一个对象class1,假设对象名称为ob1,则

ob1 = class1()
ob1.method1()

您也可以从不同的目录调用该函数,以防您不能或不希望在您正在工作的同一目录中拥有该函数。你可以通过两种方式做到这一点(也许还有更多的选择,但这些是对我有效的方法)。

选择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

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


修复

ModuleNotFoundError:没有命名模块

尝试在文件名前使用点(.)来进行相对导入:

from .file import function

将模块重命名为'file'以外的内容。

当你调用这个函数时,也要确保:

1)如果你导入了整个模块,你在调用它的时候重复模块名:

import module
module.function_name()

or

import pizza
pizza.pizza_function()

2)或者如果你导入特定的函数,带有别名的函数,或者所有使用*的函数,你不需要重复模块名:

from pizza import pizza_function
pizza_function()

or

from pizza import pizza_function as pf
pf()

or

from pizza import *
pizza_function()

在我的例子中,我将我的文件命名为help .scrap.py,直到我将其更改为help .py,它才能正常工作


如果你的文件在不同的包结构中,你想从不同的包中调用它,那么你可以这样调用它:

假设你的python项目中有以下包结构:

在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 - file中定义import语句用于导入所有函数

from com.my.func.DifferentFunction import *

或者定义想要导入的每个函数名

from com.my.func.DifferentFunction import add, sub, mul

然后在Example3.py中调用execute函数:

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

附加一个点。在文件名前面,如果你想导入这个文件,这个文件在你运行代码的同一个目录下。

例如,我正在运行一个名为a.py的文件,我想导入一个名为addFun的方法,它是用b.py写的,b.py在同一个目录中

from .b import addFun

.py文件中的函数(当然)可以在不同的目录中)可以简单地导入,只需先写入目录,然后写入没有.py扩展名的文件名:

from directory_name.file_name import function_name

function_name()


以上任何一种方法都不适合我。我得到ModuleNotFoundError:没有模块命名任何错误。 所以我的解决方案是像下面这样导入

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` 

在我的主脚本detectiverb .py文件中,我需要调用passGen函数,生成密码哈希,该函数在模块\passwordGen.py下

对我来说最快最简单的解决办法是

下面是我的目录结构

所以在detectiveROB.py中,我用下面的语法导入了我的函数

从模块。passwordGen导入passGen


只是一个简单的建议, 那些相信自动导入的人在Pycharm中按alt+ enter无法得到帮助。

只需从你想导入的地方更改文件名: 右键单击文件,然后单击refactor-> rename。 您的自动导入选项将开始出现


解决方案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不起作用

创建一个foldermyfun 在这个文件夹中创建一个文件__init__.py 在__init__.py中编写所有函数 从myfun Import *导入Colab笔记本中的函数