Python 如何避免使用Shell=True

Python 如何避免使用Shell=True,python,python-3.x,subprocess,Python,Python 3.x,Subprocess,我的脚本不想启动。 如果我运行命令localsite=subprocess.Popen(“localsite.py”)它将返回OSError:[WinError 193]%1不是有效的Win32应用程序 为了解决这个问题,我可以使用localsite=subprocess.Popen(“localsite.py”,shell=True),实际上我并不完全确定它是做什么的。但我可以想象,这会导致一些问题,因为该软件将在没有安装Python的情况下由普通用户分发和使用 但是我怎样才能避免使用shel

我的脚本不想启动。
如果我运行命令
localsite=subprocess.Popen(“localsite.py”)
它将返回
OSError:[WinError 193]%1不是有效的Win32应用程序

为了解决这个问题,我可以使用
localsite=subprocess.Popen(“localsite.py”,shell=True)
,实际上我并不完全确定它是做什么的。但我可以想象,这会导致一些问题,因为该软件将在没有安装Python的情况下由普通用户分发和使用

但是我怎样才能避免使用
shell=True

您应该这样做

localsite = subprocess.Popen(["<Path to python exe>", "Localsite.py" ])

您需要指定要执行的python.exe以及该python.exe的参数是什么

关于
shell=True
的好答案应该是
subprocess.Popen([“python”,“Localsite.py”])
subprocess.Popen([“python”,“Localsite.py”])
似乎没有什么区别。也许会有帮助,但它没有,他说Python必须在路径中可用,这正是我遇到的问题,因为它将被分发。其他两个答案使用
shell=True
当我将其分发给不使用Python的用户时,是否有其他方法可以做到这一点?我正在使用PyInstaller来创建和执行文件,但是如何调用“Localsite.py”?对于这个特定的问题,您可能会发现文档很有用,我不确定您对入口点的意思,我已经看过了文档。但是,当Python被捆绑到一个文件夹中时,我不知道如何调用它。我对Python脚本使用常规绑定方法,以便将所有内容添加到一个文件夹中。但是我在那里找不到任何Python.exe文件。
localsite = subprocess.Popen("Localsite.py")