[英]ImportError: cannot import X from the file that has if __name__ == “__main__”. Any solutions without delete if __name__ == “__main__”?
我在同一文件夹中有2个文件n1711_001_insilico
和n1711_002_insilico
。 我想要第一个文件中的两个变量( mzdf
是<class 'pandas.core.frame.DataFrame'>
,而charge
是'int'
),所以我要在第二个文件的顶部import
:
import numpy as np
import pandas as pd
from n1711_001_insilico import mzdf, charge
我收到ImportError: cannot import name mzdf
(以及charge
)。 在第一个文件中,我从该函数中显式返回mzdf
和charge
,并像这样调用它们:
if __name__ == "__main__":
mzdf, charge = CALC(peptides_report, aa_dict, charge_from=1, charge_to=6)
更新:从注释中,我现在知道问题来自第一个文件中的if __name__ == "__main__":
。 if __name__ == "__main__"
,我可以在不删除的情况下解决此问题的任何方法?
在您要导入的文件中,您具有以下语句:
if __name__ == "__main__":
mzdf, charge = CALC(peptides_report, aa_dict, charge_from=1, charge_to=6)
这意味着只有在命令行中直接执行文件(例如,使用python n1711_001_insilico.py
时, CALC
命令才会实际运行并执行,这是设置两个变量mzdf
和charge
的函数。
换句话说,只有当您直接使用python n1711_001_insilico.py
运行文件时,这两个变量python n1711_001_insilico.py
存在,而在导入文件时,Python将不会运行该函数。
这是设计使然; 导入文件后,变量__name__
指向文件名,因此条件失败。
现在,要解决此问题,您将必须在导入文件时运行CALC
函数,并获得自己的结果副本:
import numpy as np
import pandas as pd
from n1711_001_insilico import peptides_report, aa_dict, CALC
mzdf, charge = CALC(peptides_report, aa_dict, charge_form=1, charge_to=6)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.