【问题标题】:How to run another python script如何运行另一个 python 脚本
【发布时间】:2016-02-01 01:23:06
【问题描述】:

我想从 python 脚本中运行另一个 python 脚本,并终止原始脚本。我尝试了以下方法:

import os
import os.path

print os.getcwd()
>>>home/pi/Gen

print os.path.exists('/home/pi/Gen/Binary2.py')
>>> True

os.execl('python',   '/home/pi/Gen/Binary2.py')
>>> OSError: [Errno 2] No such file or directory

我做错了什么?

【问题讨论】:

  • Python 在你的道路上吗?
  • execfile(path_to_other_script)

标签: python operating-system


【解决方案1】:

您需要提供可执行文件的完整路径。您还需要提供可执行文件本身作为第一个参数:

import os

os.execl('/usr/bin/python', '/usr/bin/python', '/home/pi/Gen/Binary2.py')

您还可以使用p 变体来使用当前进程的路径来查找可执行文件:

os.execlp('python', 'python', '/home/pi/Gen/Binary2.py')

【讨论】:

  • 使用sys.executable 而不是'/usr/bin/python' 会更有意义,以确保使用相同的可执行文件来执行这两个文件。
  • @TadhgMcDonald-Jensen:是的,可能,假设您实际上想要使用相同的 Python 解释器。
  • 什么时候不会你想使用相同的python解释器?将 python 可执行文件嵌入到应用程序中,以便它可以在没有安装 python 的系统上运行,否则无法正常工作。
  • @TadhgMcDonald-Jensen:答案中的代码只是为了证明execl()需要完整路径,并且还需要第一个参数。使用 execlp() 将执行路径上的任何 Python。在某些情况下,您可能想要使用不同的解释器,例如Python 3 进程想要运行 Python 2 脚本。如果你知道可执行文件的位置(或者它在路径上),运行嵌入式 Python 仍然可以工作。
【解决方案2】:

几种方法: 您可以尝试将其添加到您的代码中

execfile("Script-To-Execute.py")

另一种方法:

import subprocess
subprocess.call("Script-To-Execute.py", shell=True)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多