使用pyinstaller将Python3和Python2转换为.exe

时间:2019-11-22 14:08:34

标签: python python-3.x python-2.7 pyinstaller

我目前正在使用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的选项。)

1 个答案:

答案 0 :(得分:2)

可能的解决方案可能是这样的:

  1. 使用pyinstaller将python2脚本(即“ script_in_py2.py”)转换为可执行文件,即“ script_in_py2.exe”。

    pyinstaller script_in_py2.py

  2. 在您的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()  
    
  3. 现在使用pyinstaller将python3脚本转换为可执行文件。

    pyinstaller script_in_py3.py

  4. 将可执行文件'script_in_py2.exe'和'python27.dll'粘贴到'script_in_py3'的dist文件夹中(即与可执行文件'script_in_py3.exe'的位置平行)

  5. 运行“ script_in_py3.exe”,您将获得所需的输出。

我已经在系统上对其进行了尝试,并且可以正常工作。