很多时候,我想在脚本中使用相同的程序包,而我大多从上一个脚本中复制所需的粘贴程序包。我想停止这项工作,并通过一个简单的功能运行所有主题,今天我尝试一下:

def econometrics():
    print("Econometrics is starting")
    import pandas as pd
    import numpy as np
    import statsmodels.formula.api as smf
    import statsmodels.api as sm
    import matplotlib.pyplot as plt
    print("Econometrics is started")

econometrics()


该函数运行没有错误,但是当我从包中调用某些方法时,出现了如下错误:
名称'plt'未定义

该代码有什么问题?无论如何有定义功能来做到这一点?

最佳答案

该代码有什么问题?


简单答案:可变范围。 plt(和其他)只能从econometrics方法中访问。



例如,尝试制作一个名为importer.py的文件

import pandas as pd
import numpy as np
import statsmodels.formula.api as smf
import statsmodels.api as sm
import matplotlib.pyplot as plt


然后在其他代码(位于同一目录中)中,

from importer import *




不过,建议使用__init__.py来解决该问题,但是尚不清楚是否具有模块/程序包布局。

如果这样做,则使用

相对导入(相同目录):from . import *
绝对导入(使用模块名称):from some_module import *

关于python - 在python脚本中运行我想要的所有软件包的方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36822485/

10-12 22:37