我正在尝试导入一个名为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导入文件时会发生这种情况
您可以通过检查文件是作为脚本运行还是作为模块导入来保护代码。为此,您需要检查当前
__name__
是否设置为'__main__'
如果您的文件如下所示:
当
__name__
为'__main__'
时,只需将其更改为仅运行foo
现在
foo
只会在直接调用文件上的python时自动运行,而不会在简单导入的情况下运行在这种情况下,您真正想要做的是创建一个单独的文件,如前面提到的@Carcigenicate。使用多次导入的所有代码,并让每个脚本导入此代码。对我来说,我创建了一个名为
main.py
的文件,其中包含需要多次导入的所有代码,然后库文件和主脚本都导入了这个文件相关问题 更多 >
编程相关推荐