【问题标题】:Do imports carry over when importing a script导入脚本时是否会继续导入
【发布时间】:2019-12-23 20:53:29
【问题描述】:

据我了解,当您从另一个脚本导入要运行的脚本时,导入将延续到新脚本。 IE。我在下面的脚本中导入pandas,现在pandas已经导入到新脚本中了,所以我不再需要在新脚本中写“import pandas as pd”了。

我知道有这个答案:Do a python module's imports need to be carried over when importing that module?,但这似乎是在讨论自定义导入(例如来自 app-helper)。我正在讨论更通用的导入,例如 os、pandas、numpy、time、sys 等。

import os
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
import time
import sys

if input('Will you be using the free or bound state peaks? (Type in "Free" or "Bound")\n').lower() != 'free':
    import slow_exchange_bound
    sys.exit()

#rest of the script

不过,基于上述脚本,如果我的 slow_exchange_bound 脚本中没有所有导入行,则它无法正常运行(即在 slow_exchange_bound 中,我必须重新输入 import os、import pandas 等)

【问题讨论】:

  • 您所说的“自定义导入”和“常规导入”没有区别。每个模块只导入一次,但它不能自动在所有模块的本地命名空间中使用(你所说的“脚本”也是一个错误的名称)。所以,你应该在任何你想使用 pandas 的地方写上“import pandas”。

标签: python


【解决方案1】:

您仍然需要slow_exchange_bound 中的import pandas as pd 等,以便名称pdslow_exchange_bound 的全局命名空间中可用。 “结转”来自模块仅评估一次的事实;后续导入已经在 sys.modules 中找到了模块,只需将对该模块的引用添加到相关命名空间即可。

【讨论】:

    猜你喜欢
    • 2016-10-24
    • 1970-01-01
    • 2019-10-01
    • 2020-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多