如何从一个python脚本导入函数而不调用它

2024-10-02 04:26:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试导入一个名为page1的函数,该函数在库文件中包含其他函数,以便在该文件中调用它。但是,这会产生以下错误:

Traceback (most recent call last):
  File "/Users/antonios/numworks-math-libs/numworksMath.py", line 1, in <module>
    import numworksLibs
  File "/Users/antonios/numworks-math-libs/numworksLibs.py", line 1, in <module>
    from numworksMath import page1
  File "/Users/antonios/numworks-math-libs/numworksMath.py", line 35, in <module>
    page1()
  File "/Users/antonios/numworks-math-libs/numworksMath.py", line 29, in page1
    numworksLibs.get_ordered_pair(ordered_pair_num, xs, ys)
AttributeError: partially initialized module 'numworksLibs' has no attribute 'get_ordered_pair' (most likely due to a circular import)

我认为这是因为主脚本正在导入库,而库正在导入主脚本(循环导入)。有没有办法用Python解决这个问题?我已经尝试了this网站上的所有解决方案,并确保没有任何名称与任何Python内置库冲突,正如前面在其他文章中提到的那样get_ordered_pair也在库文件中定义

库文件导入:

from numworksMath import page1

主脚本的一个片段:

import numworksLibs

def page1():

page1包含在没有输入的情况下调用函数时将运行的代码,从Python CLI导入文件时会发生这种情况


Tags: 文件inpyimportlinemathuserslibs
2条回答

您可以通过检查文件是作为脚本运行还是作为模块导入来保护代码。为此,您需要检查当前__name__是否设置为'__main__'

如果您的文件如下所示:

def foo():
    ...

foo()

__name__'__main__'时,只需将其更改为仅运行foo

def foo():
    ...

if __name__ == '__main__':
    foo()

现在foo只会在直接调用文件上的python时自动运行,而不会在简单导入的情况下运行

在这种情况下,您真正想要做的是创建一个单独的文件,如前面提到的@Carcigenicate。使用多次导入的所有代码,并让每个脚本导入此代码。对我来说,我创建了一个名为main.py的文件,其中包含需要多次导入的所有代码,然后库文件和主脚本都导入了这个文件

相关问题 更多 >

    热门问题