python-3.x - 如何使用 Pyinstaller 创建 .exe 文件,该文件在使用 .exe 运行时应接受命令行参数
问题描述
我有 main.py 文件,它将接受 2 个参数,创建一个 setup.py 文件并使用此文件通过使用 Pyinstaller 创建独立的应用程序,即 .exe 文件,如下所示:
主要.py:
import sys
import argparse
parser = argparse.ArgumentParser(description='Display full name.')
parser.add_argument("-f", '--firstname', type=str, default='', help='first name.')
parser.add_argument("-l", '--lastname', type=str, default='', help='Last name.')
parsed_args = vars(parser.parse_args())
first_name = parsed_args['firstname']
last_name = parsed_args['lastname']
print("Hello " + first_name + " " + last_name)
设置.py:
from distutils.core import setup
import py2exe, sys, os
sys.argv.append('py2exe')
firstname = 0
lastname = 0
if '--firstname' in sys.argv:
index = sys.argv.index('--firstname')
sys.argv.pop(index)
upload = sys.argv.pop(index)
if '--lastname' in sys.argv:
index = sys.argv.index('--lastname')
sys.argv.pop(index)
token = sys.argv.pop(index)
print("firstName:", firstname)
print("lastName:", lastname)
setup(
console=['main.py'],
script_args=[firstname, lastname],
)
我使用命令创建了 setup.exe 文件:
pyinstaller setup.py --onefile
我试图将命令执行为:
setup.exe --firstname "CLMSS" --lastname "BGMDDS"
在这里,我传递了 2 个参数,就像运行 main.py 时使用的一样。因此,对于此错误:
系统无法执行指定的程序。
你能帮忙吗,如何解决这个问题?或如何将 .exe 文件制作为接受命令。
解决方案
可能不是您正在寻找的解决方案,但对于其他有此问题的人,我建议您使用sys.argv[1]
来获取参数,而不是使用 argparse 来获取您的参数。它也能正常工作,并且对 .exe 执行非常友好cmd