我需要生成一个独立的便携式python应用程序并在远程系统上运行,即使没有安装python解释器或版本也不同。
目标是将python脚本打包为应用程序,将其转移到远程系统,并将其作为独立应用程序运行,无任何依赖性。
我们在Python世界中有这样的方式吗?以前有人做过类似的事吗?
答案 0 :(得分:2)
冻结是游戏的名称。
以下是使用PyInstaller
的示例。
示例脚本test.py
:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from functools import reduce
my_list = list('1234567890')
my_list = list(map(lambda x: int(x), my_list))
my_sum = reduce(lambda x, y: x + y, my_list)
print("The sum of %s is %d" % (list(my_list), my_sum))
要从脚本创建二进制文件,请安装PyInstaller
并在您的代码上运行它:
$ pyinstaller -F test.py
完成后,您应该在./dist
中找到独立的二进制文件。当你运行它时,它的行为就像任何其他程序一样:
$ ./dist/test
The sum of [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] is 45
有关详细信息,请查看here
答案 1 :(得分:0)
由于您提到的可移植性甚至比Python已提供的更多,因为您提到Python解释器可能不在远程系统上,因此最适合您的方法是将其编译为Java应用程序。您可以按照以下步骤操作。
在VisAD-Jython安装目录中创建一个批处理文件(或脚本)以调用jythonc编译器。下面是一个示例脚本。让我们将其命名为abc.bat
@echo off
set JYTHON_PATH=.
set CLASSPATH=.
%JYTHON_PATH%\jre\bin\java.exe -mx256m "-Dpython.home=%JYTHON_PATH%\\" "-Dpython .path=%JYTHON_PATH%.\\" -cp "%JYTHON_PATH%\\jython.jar;%JYTHON_PATH%\\visad.jar; %JYTHON_PATH%\\;." org.python.util.jython "%JYTHON_PATH%\Tools\jythonc\jythonc.p y " --compiler javac %1 %2 %3 %4 %5 %6 %7 %8 %9
然后编译你的.py脚本,如下所示:
abc --core --jar new.jar new.py
现在,您可以使用Java在任何地方移植和运行它。