Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python脚本中运行我想要的所有包的方法_Python_Scipy - Fatal编程技术网

在python脚本中运行我想要的所有包的方法

在python脚本中运行我想要的所有包的方法,python,scipy,Python,Scipy,有很多次我想在我的脚本中使用相同的包,我主要是从我的上一个脚本复制粘贴包。我想停止这项工作,用一个简单的函数运行所有主题,今天我尝试以下方法: def econometrics(): print("Econometrics is starting") import pandas as pd import numpy as np import statsmodels.formula.api as smf import statsmodels.api as s

有很多次我想在我的脚本中使用相同的包,我主要是从我的上一个脚本复制粘贴包。我想停止这项工作,用一个简单的函数运行所有主题,今天我尝试以下方法:

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和其他方法只能从计量经济学方法中获取

例如,尝试创建一个名为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 *
不过,使用_uinit_uuu.py可能是实现这一点的推荐方法,但不清楚您是否有模块/包布局

如果是,那么使用

相对导入相同目录:从。进口* 绝对导入使用模块名称:从某个模块导入*

那个代码有什么问题

简单回答:变量范围。plt和其他方法只能从计量经济学方法中获取

例如,尝试创建一个名为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 *
不过,使用_uinit_uuu.py可能是实现这一点的推荐方法,但不清楚您是否有模块/包布局

如果是,那么使用

相对导入相同目录:从。进口*
绝对导入使用模块名:从某些模块导入中*

您的意图在python语法中是错误的。因为在您的代码中。因此,当你进行导入时,你在计量经济学函数范围内创建了一系列变量,因此你的变量只在该函数范围内

所以,让我们举一个更简单的例子:

>>> def foobar():
...   a = 1
...   b = 2
...
>>> foobar()
>>> a
NameError: name 'a' is not defined
这里a和b只存在于foobar的函数范围内,所以它超出了主范围

要按您想要的方式执行操作,您应该将变量声明为:

回到foobar示例:

>>> def foobar():
...   a = 1
...   b = 2
...
>>> foobar()
>>> a
NameError: name 'a' is not defined
不过,我真的不喜欢这种做事方式,因为它是含蓄地做事。考虑到您有一个仅定义了计量经济学函数的python模块,人们正在阅读以下代码:

from econometrics import econometrics
econometrics()

plt.something()
不必理解plt是通过计量经济学函数调用提供的。添加评论会有所帮助,但仍然是不必要的额外步骤

总的来说,大多数时候总是有更好的方法来做。在中,有人指出显式优于隐式,因此我认为更优雅的方法是创建一个进行导入的模块,然后从模块中导入所需的内容:

计量经济学:

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 econometrics import pd, plt

plt.something()
这将更加优雅和明确!然后,您只需将该文件放在任何需要数学模块的项目中,就可以在代码中获得所有您喜爱的模块,并且只有这些模块才可以使用

然后,作为进一步的步骤,您可以定义自己的python模块,并将econometrics.py文件设置为econometrics package目录中的_init__; py.py,然后通过以下方式将其安装为python包:

python setup.py install
在你的源头。因此,您编写的任何代码都可以使用计量经济学作为python包。你甚至可以考虑让它成为PyPI的包!
HTH

您的意图在python语法中是错误的。因为在您的代码中。因此,当你进行导入时,你在计量经济学函数范围内创建了一系列变量,因此你的变量只在该函数范围内

所以,让我们举一个更简单的例子:

>>> def foobar():
...   a = 1
...   b = 2
...
>>> foobar()
>>> a
NameError: name 'a' is not defined
这里a和b只存在于foobar的函数范围内,所以它超出了主范围

要按您想要的方式执行操作,您应该将变量声明为:

回到foobar示例:

>>> def foobar():
...   a = 1
...   b = 2
...
>>> foobar()
>>> a
NameError: name 'a' is not defined
不过,我真的不喜欢这种做事方式,因为它是含蓄地做事。考虑到您有一个仅定义了计量经济学函数的python模块,人们正在阅读以下代码:

from econometrics import econometrics
econometrics()

plt.something()
不必理解plt是通过计量经济学函数调用提供的。添加评论会有所帮助,但仍然是不必要的额外步骤

总的来说,大多数时候总是有更好的方法来做。在中,有人指出显式优于隐式,因此我认为更优雅的方法是创建一个进行导入的模块,然后从模块中导入所需的内容:

计量经济学:

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 econometrics import pd, plt

plt.something()
这将更加优雅和明确!然后,你只需要把这个文件放到任何需要你的数学模块的项目中就可以了 需要的模块-并且只有它们-在您的代码中可用

然后,作为进一步的步骤,您可以定义自己的python模块,并将econometrics.py文件设置为econometrics package目录中的_init__; py.py,然后通过以下方式将其安装为python包:

python setup.py install
在你的源头。因此,您编写的任何代码都可以使用计量经济学作为python包。你甚至可以考虑让它成为PyPI的包!
HTH

您已将包导入函数范围。如果要在全局范围内使用它们,必须告诉python

def importfunc():
    global np
    import numpy as np

importfunc()
print np.version.version

另一方面:你在使用某种工具链吗?我认为最好使用IDE或编写一个脚本来为您设置新项目。

您将包导入了函数的范围。如果要在全局范围内使用它们,必须告诉python

def importfunc():
    global np
    import numpy as np

importfunc()
print np.version.version

另一方面:你在使用某种工具链吗?我认为最好使用IDE或编写脚本为您设置新项目。

调用函数时会执行各种导入,但名称pd、np等是函数的本地名称,因此不能在函数外部引用


我想您可以返回这些名称,但是在这样的函数中导入模块会让读者更难理解代码,IMHO。

调用函数时会执行各种导入,但是名称pd、np等是函数的本地名称,因此不能在函数外引用它们


我想您可以返回这些名称,但是在这样的函数中导入模块会使您的代码更难让读者理解,IMHO。

事实上,这些模块在计量经济学中工作得很好,但不在其范围之外。我努力完成同样的工作,决定创建我自己的工具箱模块,这样我就可以从tbx.acustics导入混响中编码,并从那里获得我想要的所有导入。事实上,这些模块在计量经济学中工作得很好,而不在其范围之外。我努力完成同样的工作,决定创建我自己的工具箱模块,这样我就可以从tbx中编码。acustics导入混响并从那里获得我想要的所有导入。感谢cricket,我绝对有一个软件包布局,我尝试了这个,我给你打电话,结果如何!我不会将其定义为包的_init__u;.py,而是一个简单的.py模块。@zmo可能不会。我只是列出了一个选项,他可以将这个导入器文件放在一个Python导入路径中,在任何地方对所有脚本都是免费的。为了避免在每个脚本目录中移动它,最好使用setup.py来正确安装它,正如我在回答中建议的那样!谢谢板球我绝对有一个包布局,我尝试了这个,我叫你什么是结果!我不会将其定义为包的_init__u;.py,而是一个简单的.py模块。@zmo可能不会。我只是列出了一个选项,他可以将这个导入器文件放在一个Python导入路径中,在任何地方对所有脚本都是免费的。为了避免在每个脚本目录中移动它,最好使用setup.py来正确安装它,正如我在回答中建议的那样!右,功能范围,非阻塞,周日上午错误:-右,功能范围,非阻塞,周日上午错误:-