【发布时间】:2019-11-22 14:08:34
【问题描述】:
我目前正在 Python 3 上编写脚本。
我需要从我的 Python 3 脚本中调用一个已经存在的 Python 2 脚本。
在 Python3 脚本中,我正在使用类似这样的方法:
import subprocess
my_command = 'python script_in_py2.py arg1 arg2'
process = subprocess.Popen(my_command.split(), stdout = subprocess.PIPE)
output, error = process.communicate()
因此,如果我刚刚在终端中写入my_command,变量output 将获得将显示在屏幕上的输出。
虽然我目前在 Ubuntu 中进行开发,但最终我会将其迁移到需要将其转换为 .exe 的 Windows。为此,我以前使用过 pyinstaller。
我知道在没有安装 Python 的 Windows 机器上运行生成的 .exe(纯 Python3 脚本)完全可以。 但是在继续之前我需要知道它是否也会像这样工作。我的直觉是否定的(据我所知,创建这样的过程类似于直接在终端/命令提示符中运行命令),但是我想知道是否有人知道一种方法/解决方法。 (不能在运行脚本的机器上安装 Python2)。
【问题讨论】:
-
如果您在代码中运行
python script,那么您必须在计算机上安装Python2。 -
pyinstaller不会创建真正的.exe文件(与C/C++ 一样),但它会创建带有python.exe的自解压.zip文件以及您在此.zip中的脚本。也许最好用 Python2 全部编写,也许python script也可以与pyinstaller放入.exe的 python.exe 一起使用 -
或更好地重写其他脚本,以便您可以
import他们并从此脚本运行函数 - 而不是使用子进程运行。您还可以使用if __name__ == '__main__':以两种不同的方式运行它。 -
@furas 感谢您的评论,但是鉴于它不是我需要在 2 中运行的次要脚本,我只是想知道是否可以在不深入研究在 3 中重写整个内容的情况下做到这一点。
标签: python python-3.x python-2.7 pyinstaller