【问题标题】:Shebang command to call script from existing script - PythonShebang 命令从现有脚本调用脚本 - Python
【发布时间】:2017-08-10 05:22:22
【问题描述】:

我正在我的树莓派上运行一个 python 脚本,最后我想在同一目录中调用第二个 python 脚本。我使用os.system() 命令调用它,如下面的代码 sn-p 所示,但会出现导入错误。我理解这是因为系统将脚本名称解释为 shell 命令,并且需要被告知使用 python 运行它,在我的第二个脚本开头使用 shebang 行。

#!/usr/bin/env python

但是这样做并不能解决错误

这是第一个脚本的结尾 sn-p:

# 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

非常感谢任何帮助:)

【问题讨论】:

  • 运行代码时遇到的实际导入错误是什么?

标签: python-2.7 os.system shebang


【解决方案1】:

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

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

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

'#!usr/bin/env python'

'#!/usr/bin/env python'

【讨论】:

    【解决方案2】:

    这里的设置并不理想。

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

    【讨论】:

      【解决方案3】:

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

      chmod a+x b.py
      

      以下是我的示例:
      一个.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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-12-20
        • 1970-01-01
        • 2020-02-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多