如何从一个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 中解决这个问题?我已经尝试了该网站上的所有解决方案,并确保没有任何名称与任何 Python 内置库冲突。get_ordered_pair也在库文件中定义。


库文件导入:


from numworksMath import page1

主脚本的片段:


import numworksLibs


def page1():

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


一只萌萌小番薯
浏览 144回答 2
2回答

catspeake

您可以通过检查文件是否作为脚本运行或者是否作为模块导入来保护代码。为此,您需要检查电流是否__name__设置为'__main__'。如果您的文件如下所示:def&nbsp;foo(): &nbsp;&nbsp;&nbsp;&nbsp;... foo()只需将其更改为仅在运行foo时运行__name__'__main__'def&nbsp;foo(): &nbsp;&nbsp;&nbsp;&nbsp;... if&nbsp;__name__&nbsp;==&nbsp;'__main__': &nbsp;&nbsp;&nbsp;&nbsp;foo()现在foo只有当你直接在文件上调用 python 时才会自动运行,而不是简单地导入它。

潇湘沐

在这种情况下,您真正想做的是创建一个单独的文件,包含您多次导入的所有代码,并让每个脚本导入它。对我来说,我创建了一个名为 的文件,main.py其中包含需要多次导入的所有代码,然后库文件和主脚本都导入该文件。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python