与Python中R的source()等效

与Python中R的source()等效,python,execute,Python,Execute,就像我们有source()函数在R studio中的另一个R程序中执行R程序一样,如何在另一个python程序中执行python程序?给定两个python脚本:first.py和second.py,从第二个执行第一个的常用方法如下: first.py: def func1(): print 'inside func1 in first.py' if __name__ == '__main__': # first.py executed as a script func1

就像我们有
source()
函数在R studio中的另一个
R
程序中执行
R
程序一样,如何在另一个python程序中执行python程序?

给定两个python脚本:
first.py
second.py
,从第二个执行第一个的常用方法如下:

first.py:

def func1():
    print 'inside func1 in first.py'

if __name__ == '__main__':
    # first.py executed as a script
    func1()
第二点:

import first

def second_func():
    print 'inside second_func in second.py'

if __name__ == '__main__':
    # second.py executed as a script
    second_func()
    first.func1() # executing a function from first.py
编辑

  • 如果愿意,也可以使用简单的
    execfile(“second.py”)
    (尽管它只在调用名称空间中)
  • 最后一个选项是这样使用:
    os.system(“second.py”)

如果您习惯于直接从GitHub进行寻源,则可以使用requests包下载带有http get的原始*.py文件,然后执行该文件

import requests
exec(requests.get('http://github.myorg.net/raw/repo/directory/file.py').text)

免责声明:我是学习Python的R用户,因此这可能违反了一些Python最佳实践

我发现
execfile
与R的
源代码最为相似
我同意vpipkt。这可能不是最适合Python的方式,但有时我只想执行另一个Python脚本,就像它在第一个脚本中一样(这就是
source()
在R中所做的)。关于@ldos在他们编辑的答案的第一个项目符号上的注释:“(尽管它只在调用的命名空间中)”:为了避免这个问题,我们可以使用
sitecustomize
包中的
runfile()
,以便包含的脚本在其自己的命名空间中运行。在我的场景中,这个特性特别重要,因为从包含的脚本中,我需要访问
\uuuu file\uuuu
属性,当使用
execfile()
时,该属性解析为调用脚本的文件名!(对我来说没有用处,因为在包含的脚本中,我需要检索它的目录位置)这个问题提供了一种相关的方法: