我正在构建一个Python程序,该程序也从内部运行Perl脚本。有没有一种方法可以创建可执行文件,而我的程序用户不必安装Perl但可以使用Python?
这里是如何使用pp
生成可执行文件的示例(不依赖于正在安装的pp
可执行文件。
我正在Ubuntu 20.04上将perl
与perlbrew
5.30版一起使用。
首次安装perl
:
pp
创建测试Perl脚本cpanm PAR::Packer
(您可能需要先安装hello.pl
):
Path::Tiny
将其打包为可执行文件:
use feature qw(say);
use strict;
use warnings;
use Path::Tiny; # <-- NOTE: non-core module used
say "Hello world! CWD = ", Path::Tiny->cwd;
通过擦除pp -o hello hello.pl
,测试Perl脚本是否独立于perl
可执行文件:
PATH
创建测试Python脚本,$ PATH= ./hello
Hello world! CWD = /home/hakon/pp
:
t.py
运行Python脚本:
import os
os.system("./hello")
[我还用Docker容器对此进行了测试,在该容器中,我将编译后的$ python3 t.py
Hello world! CWD = /home/hakon/pp
可执行文件传输到该容器,然后从该容器中运行hello
。
如果将此可执行文件转移到核心库版本(例如hello
)与构建可执行文件的计算机上使用的版本不同的计算机上,则该可执行文件可能无法在目标计算机上运行。有关Python中的类似问题以及对此问题的进一步讨论,请参见glibc
。