强制子进程使用Python 3 [关闭]

问题描述 投票:-4回答:1

所以,我试图编写一个Python脚本,利用subprocess在同一目录中调用另一个Python脚本。这一切都进行得很顺利,直到第二个脚本中的import语句达到了Python 3-only库,并且由于脚本是使用subprocess打开的,而ImportError又使用了Python 2,因此发生了subprocess

我如何强制Popen(),特别是stream = subprocess.Popen(['python3', 'app.py']) ,使用Python 3打开脚本?在网上似乎没有这方面的建议。

编辑

虽然我总是默认发布MWE,但对于这个问题,我认为这是不必要的,但无论如何,当我继续发布它时,我发现使用'python3'而不仅仅是'python',

python

现在应用程序工作。奇怪的是,我自己只安装了一个版本的Python(3.7),并且python3重定向到python3,所以很奇怪我必须手动指定#! /usr/bin/python3 import sys, subprocess if sys.version_info[:2] < (3, 0): # FORCE PYTHON3 code = subprocess.check_call(['python3'] + sys.argv) raise SystemExit(code) print("Using Python v%d.%d" % sys.version_info[:2])

python python-3.x macos shell subprocess
1个回答
1
投票

这是一种强制脚本与Python3一起运行的方法:

> python3 force_python3.py                                                                                                                         
Using Python v3.7

> python2 force_python3.py                                                                                                                         
Using Python v3.7

在Bash中运行时的示例:

qazxswpoi
© www.soinside.com 2019 - 2024. All rights reserved.