我正在尝试导入一个名为的函数,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 numworksLibsdef page1():page1包含在没有输入的情况下调用函数时将运行的代码,并且从 Python CLI 导入文件时会发生这种情况。
2 回答
catspeake
TA贡献1111条经验 获得超0个赞
您可以通过检查文件是否作为脚本运行或者是否作为模块导入来保护代码。为此,您需要检查电流是否__name__
设置为'__main__'
。
如果您的文件如下所示:
def foo(): ... foo()
只需将其更改为仅在运行foo
时运行__name__
'__main__'
def foo(): ... if __name__ == '__main__': foo()
现在foo
只有当你直接在文件上调用 python 时才会自动运行,而不是简单地导入它。
潇湘沐
TA贡献1816条经验 获得超6个赞
在这种情况下,您真正想做的是创建一个单独的文件,包含您多次导入的所有代码,并让每个脚本导入它。对我来说,我创建了一个名为 的文件,main.py
其中包含需要多次导入的所有代码,然后库文件和主脚本都导入该文件。
添加回答
举报
0/150
提交
取消