我目前正在使用Python 3编写脚本。
我需要从我的Python 3脚本中调用一个已经存在的Python 2脚本。
在Python3脚本中,我使用类似以下命令的方法进行
:memset
因此,如果我刚刚在终端中编写了import subprocess
my_command = 'python script_in_py2.py arg1 arg2'
process = subprocess.Popen(my_command.split(), stdout = subprocess.PIPE)
output, error = process.communicate()
,则变量output
将获得在屏幕上显示的输出。
尽管我目前正在Ubuntu中进行开发,但最终我会将其迁移到Windows,在其中我需要将其转换为.exe。为此,我以前使用了pyinstaller。
我知道可以在没有安装Python的Windows机器上运行(纯Python3脚本的)生成的.exe。 但是我需要在继续之前知道它是否也可以这样工作。我的直觉不是(据我所知,创建这样的过程类似于直接在终端/命令提示符中运行命令),但是我想知道是否有人知道一种方法/解决方法。 (不是可以在运行脚本的计算机上安装Python2的选项。)
答案 0 :(得分:2)
可能的解决方案可能是这样的:
使用pyinstaller将python2脚本(即“ script_in_py2.py”)转换为可执行文件,即“ script_in_py2.exe”。
pyinstaller script_in_py2.py
在您的python3脚本中,调用此python 2可执行文件,而不是调用python 2脚本。
import subprocess
my_command = 'script_in_py2.exe arg1 arg2'
process = subprocess.Popen(my_command.split(), stdout = subprocess.PIPE)
output, error = process.communicate()
现在使用pyinstaller将python3脚本转换为可执行文件。
pyinstaller script_in_py3.py
将可执行文件'script_in_py2.exe'和'python27.dll'粘贴到'script_in_py3'的dist文件夹中(即与可执行文件'script_in_py3.exe'的位置平行)
运行“ script_in_py3.exe”,您将获得所需的输出。
我已经在系统上对其进行了尝试,并且可以正常工作。