Shebang命令从现有脚本调用脚本 - Python

时间:2017-08-10 05:22:22

标签: python-2.7 os.system shebang

我正在我的覆盆子pi上运行一个python脚本,最后我要在同一目录中调用第二个python脚本。我使用os.system()命令调用它,如下面的代码片段所示,但是导致导入错误。我理解这是因为系统将脚本名称解释为shell命令,需要告诉我使用python运行它,使用我第二个脚本开头的shebang行。

#!/usr/bin/env python

但这样做并不能解决错误

以下是第一个脚本的结尾片段:

# Time to Predict E
  end3 = time.time()
  prediction_time = end3-start3
  print ("\nPrediction time: ", prediction_time, "seconds")

  i = i+1
  print (i) 



script = '/home/pi/piNN/exampleScript.py'
os.system('"' + script + '"')

这是我第二个脚本的开头:

'#!usr/bin/env python'

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
#from picamera import PiCamera


import argparse
import sys
import time

import numpy as np
import tensorflow as tf
import PIL.Image as Image

非常感谢任何帮助:)

3 个答案:

答案 0 :(得分:0)

您在这里的设置并不理想。

考虑简单地导入您的其他脚本(确保它们位于同一目录中)。导入它将导致在脚本中执行未包含在if __name__ == "__main__":中的所有可执行python代码。关于这个主题,如果您需要保护某些代码不被执行,请将其放在那里。

答案 1 :(得分:0)

由于您尚未发布运行代码时遇到的实际错误,因此这是我最好的猜测。首先,确保exampleScript.py可执行:

chmod +x /home/pi/piNN/exampleScript.py

其次,在exampleScript.py中向shebang添加缺少的前导斜杠,即更改

'#!usr/bin/env python'

'#!/usr/bin/env python'

答案 2 :(得分:0)

我有2个python文件a.py和b.py,我设置了b.py的执行权限。

chmod a+x b.py

以下是我的样本:
a.py

#!/usr/bin/python
print 'Script a'
import os
script = './b.py'
os.system('"' + script + '"')

b.py

#!/usr/bin/python
print 'Script b'

执行" python a.py",结果是:

Script a
Script b