从命令行运行Python exe

从命令行运行Python exe,python,Python,我对Python非常陌生,所以这是在浪费我的时间。但这是一个简单的问题。我有一个python程序,如下所示 import time import os import subprocess def camera_play(cmd): if cmd == 1: cmd = 'raspistill --nopreview -w 640 -h 480 -q 5 -o /tmp/stream/pic.jpg -tl 100 -t 9999999 -th 0:0:0 &'

我对Python非常陌生,所以这是在浪费我的时间。但这是一个简单的问题。我有一个python程序,如下所示

import time
import os
import subprocess

def camera_play(cmd):

  if cmd == 1:
     cmd = 'raspistill --nopreview -w 640 -h 480 -q 5 -o /tmp/stream/pic.jpg -tl 100 -t 9999999 -th 0:0:0 &'
     pid = subprocess.call(cmd, shell = True)

     cmd1 = 'LD_LIBRARY_PATH=/usr/local/lib mjpg_streamer -i "input_file.so -f /tmp/stream -n pic.jpg" -o "output_http.so -w /usr/local/www"'

     pid1 = subprocess.call(cmd1, shell = True)
  elif cmd == 0:
     pid.kill()
     pid1.kill()
我用Pyinstaller做了一个exe程序。如何使用输入参数从命令行运行exe。 我跑得很快

camera_play 1
camera_play -i 1

它不起作用。谢谢

因为您在Linux下运行,所以不必创建exe文件。 您的代码不会做任何事情,因为只有一个函数,但它永远不会被调用

必须在定义后使用此函数

    #!/usr/bin/python

    import...

    def camera_play(cmd):
        ...

    if len(sys.argv)>1:
        cmd = sys.argv[1]
    else:
        cmd = WHAT YOU WANT???
    camera_play(cmd)
要从命令行调用脚本,有两种可能:

    python myscript

请注意,cmd似乎接受1或0,这很奇怪!如果为0,pid变量将不存在! 你必须认真思考你想做什么。 您也可以考虑使用subprocess.Popen查看此链接,您有两个问题:

您的程序中没有main 您没有处理命令行参数 您需要在文件末尾使用类似的内容:

    if __name__ == "__main__":
      camera_play(sys.argv[1])

这个和这个结合在一起/具有正确unix可执行权限的文件顶部的bin/python应允许您使用参数从命令行运行它。

*.exe和LD_LIBRARY_PATH=/usr/local/lib/。。。?那怎么行?你在哪个平台上,Linux还是Windows?我在Linux上运行。它起作用了。我已经测试过了。你不能在Linux上运行*.exe文件,这是MS Windows特有的可执行格式。请安装wine,然后尝试wine camera_play 1,无论如何,你不需要Pyinstaller。chmodu+x和/文件开头的bin/python足够了。因为我是从我的远程设备运行程序,所以我需要生成exe并将其放入usr/bin。稍后我将学习python。现在我需要先完成流媒体。谢谢
    if __name__ == "__main__":
      camera_play(sys.argv[1])