簡體   English   中英

ImportError:無法從具有__name__ ==“ __main__”的文件中導入X。 如果__name__ ==“ __main__”,有沒有刪除的解決方案嗎?

[英]ImportError: cannot import X from the file that has if __name__ == “__main__”. Any solutions without delete if __name__ == “__main__”?

我在同一文件夾中有2個文件n1711_001_insilicon1711_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 )。 在第一個文件中,我從該函數中顯式返回mzdfcharge ,並像這樣調用它們:

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命令才會實際運行並執行,這是設置兩個變量mzdfcharge的函數。

換句話說,只有當您直接使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM