【问题标题】:How to input arguments after compiling python program with PyInstaller使用 PyInstaller 编译 python 程序后如何输入参数
【发布时间】:2014-11-17 00:40:22
【问题描述】:

import sys 之后,我使用sys.argv 来获取输入参数。

但是当我用 PyInstaller 编译我的程序后,exe 程序将不接受我的输入。相反,它使用我为程序设置的默认值。

如果我使用python this_script.py 运行它,它会等待我的输入指定wait_time。但是,我用 PyInstaller 编译后,如果我双击 exe 文件,我没有地方可以输入wait_time

如何编译它并让 exe 文件接受我的输入?

import sched, time
import sys
    
s = sched.scheduler(time.time, time.sleep)
    
# wait_time is an integer representing how many seconds to wait.
def do_something(sc, wait_time): 
    # Here will be the code for doing something every after "wait_time " seconds
    sc.enter(wait_time, 1, do_something, (sc, wait_time))  
    
    try:
        wait_time = int(sys.argv[1])
    except IndexError:
        wait_time = 5    
    
    
# s.enter(wait_time, 1, do_something, (s,))
s.enter(wait_time, 5, do_something, (s, wait_time))
s.run()

【问题讨论】:

  • 你能给我们一个简短的代码示例来演示这个问题吗?您是否尝试将其作为脚本而不是已编译的可执行文件运行?
  • 您如何运行生成的.exe 文件?您是从命令提示符运行它还是单击它?
  • 您是否提供了任何命令行参数?
  • 以上是代码。我希望程序每 5 分钟重复一次。然后我可以输入wait_time = 300。我想直接运行.exe而不是使用python命令行。

标签: python pyinstaller


【解决方案1】:

如果你点击exe打开它:

通常,当你双击exe时,只有一个参数<EXEfilename>。为该 exe 创建一个快捷方式。在该快捷方式的属性中,您将看到一个名为Target 的属性,其中包含<EXEfilename>,将其更改为<EXEfilename> <arg1> <arg2>。当你使用这个快捷方式打开exe时,它会调用目标,也就是这个调用<EXEfilename> <arg1> <arg2>。然后您可以使用sys.argv 访问arg1arg2

如果你使用命令行:

就叫它C:\> <EXEfilename> <arg1> <arg2>

【讨论】:

  • 谢谢!在目标中更改添加 后,它可以工作。但是有什么方法可以让我以交互方式输入 arg1 吗?
  • 我看到这个问题是由于windows系统造成的。对于 linux,我们可以在 shell 中运行 。对于windows,我们习惯双击exe,无法输入,除非我们使用cmd或者在程序中添加一个gui。
  • 或者您可以使用打开的控制台。如果您使用的是 python 2,则为 arg1 = raw_input('Enter arg1');如果您使用的是 python 3,则为 arg1 = input('Enter arg1')。这允许用户以交互方式输入参数。
  • 谢谢!这就是我要找的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-21
  • 2018-06-08
  • 1970-01-01
  • 2022-12-11
  • 1970-01-01
  • 2022-08-16
  • 2021-12-12
相关资源
最近更新 更多