如何从另一个 .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 fi...

问题描述:

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.pyb.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 项目中有以下包结构:

Python 包和文件结构

com.my.func.DifferentFunctionpython 文件中有一些函数,例如:

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 不起作用

  1. 创建文件夹myfun

  2. 在此文件夹中创建一个文件__init__.py

  3. 将所有函数写入__init__.py

  4. 从 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 进行自动导入的人无法获得帮助。

只需更改要导入的文件名即可:右键单击文件,然后单击“重构”->“重命名”。自动导入选项将开始出现

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1565  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1354  
  信创国产芯片作为信息技术创新的核心领域,对于推动国家自主可控生态建设具有至关重要的意义。在全球科技竞争日益激烈的背景下,实现信息技术的自主可控,摆脱对国外技术的依赖,已成为保障国家信息安全和产业可持续发展的关键。国产芯片作为信创产业的基石,其发展水平直接影响着整个信创生态的构建与完善。通过不断提升国产芯片的技术实力、产...
国产信创系统   21  
  信创生态建设旨在实现信息技术领域的自主创新和安全可控,涵盖了从硬件到软件的全产业链。随着数字化转型的加速,信创生态建设的重要性日益凸显,它不仅关乎国家的信息安全,更是推动产业升级和经济高质量发展的关键力量。然而,在推进信创生态建设的过程中,面临着诸多复杂且严峻的挑战,需要深入剖析并寻找切实可行的解决方案。技术创新难题技...
信创操作系统   27  
  信创产业作为国家信息技术创新发展的重要领域,对于保障国家信息安全、推动产业升级具有关键意义。而国产芯片作为信创产业的核心基石,其研发进展备受关注。在信创国产芯片的研发征程中,面临着诸多复杂且艰巨的难点,这些难点犹如一道道关卡,阻碍着国产芯片的快速发展。然而,科研人员和相关企业并未退缩,积极探索并提出了一系列切实可行的解...
国产化替代产品目录   28  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用