可在远程系统上运行的便携式python应用程序
我需要生成一个独立的可移植python应用程序,并在远程系统上运行,即使在远程系统中,python解释器也没有安装,或者版本不同 其目的是将python脚本打包为一个应用程序,将其传输到远程系统,并将其作为一个独立的应用程序运行,而不需要任何依赖项可在远程系统上运行的便携式python应用程序,python,portability,Python,Portability,我需要生成一个独立的可移植python应用程序,并在远程系统上运行,即使在远程系统中,python解释器也没有安装,或者版本不同 其目的是将python脚本打包为一个应用程序,将其传输到远程系统,并将其作为一个独立的应用程序运行,而不需要任何依赖项 我们在Python世界中有这样的方法吗?以前有人做过类似的事情吗 冻结是游戏的名称 下面是一个使用PyInstaller的示例 示例脚本test.py: #/usr/bin/env蟒蛇3 #-*-编码:utf-8-*- 从functools导入red
我们在Python世界中有这样的方法吗?以前有人做过类似的事情吗 冻结是游戏的名称 下面是一个使用
PyInstaller
的示例
示例脚本test.py
:
#/usr/bin/env蟒蛇3
#-*-编码:utf-8-*-
从functools导入reduce
我的清单=清单('1234567890')
我的列表=列表(映射(lambda x:int(x),我的列表))
my_sum=reduce(λx,y:x+y,my_列表)
打印(“%s的总和是%d%”(列表(我的列表),我的总和))
要从脚本创建二进制文件,请安装PyInstaller
,并在代码上运行它:
完成后,您应该在/dist
中找到独立二进制文件。运行它时,它的行为与任何其他程序一样:
$。/dist/测试
[1,2,3,4,5,6,7,8,9,0]之和是45
有关更多信息,请查看冻结是游戏的名称 下面是一个使用
PyInstaller
的示例
示例脚本test.py
:
#/usr/bin/env蟒蛇3
#-*-编码:utf-8-*-
从functools导入reduce
我的清单=清单('1234567890')
我的列表=列表(映射(lambda x:int(x),我的列表))
my_sum=reduce(λx,y:x+y,my_列表)
打印(“%s的总和是%d%”(列表(我的列表),我的总和))
要从脚本创建二进制文件,请安装PyInstaller
,并在代码上运行它:
完成后,您应该在/dist
中找到独立二进制文件。运行它时,它的行为与任何其他程序一样:
$。/dist/测试
[1,2,3,4,5,6,7,8,9,0]之和是45
有关更多信息,请查看,因为您需要的可移植性甚至超过Python已经提供的功能,正如您所提到的,Python解释器可能不在远程系统上,所以最合适的方法是将其编译为Java应用程序。您可以按照以下步骤操作
@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
abc --core --jar new.jar new.py
现在,您可以使用Java在任何地方移植和运行它。因为您需要的可移植性甚至超过Python已经提供的功能,正如您所提到的,Python解释器可能在远程系统上不存在,所以最合适的方法是将其编译为Java应用程序。您可以按照以下步骤操作
@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
abc --core --jar new.jar new.py
现在,您可以使用Java将其移植到任何地方并运行。有一种叫做
py2exe
,您可以将脚本编译成可执行的exe文件。但老实说,这个解决方案不是没有问题的。我们谈论的是什么样的系统?用户可以使用什么,这些系统的用户将在多大程度上实现这一点?(也就是说,你能发布一个VM映像吗?Docker映像呢?他们能使用Ansible/Puppet之类的工具吗?)有一种叫做py2exe
,你可以将你的脚本编译成可执行的exe文件。但老实说,这个解决方案不是没有问题的。我们谈论的是什么样的系统?用户可以使用什么,这些系统的用户将在多大程度上实现这一点?(也就是说,你能发布虚拟机映像吗?Docker映像呢?他们能使用Ansible/Puppet之类的工具吗?)。而且它也不会花费太多的编译工作。与Python相比?我不这么认为。。。另外,我不是最初的海报,我只是惊讶地听到有人建议Java使Python更具跨平台性,而事实可能恰恰相反(即,通过将Python捆绑到Java中,使应用程序更不容易分发和安装)。我没有注意到你不是海报。虽然python只需要一个解释器设置,但问题是它特别提到了OP在远程系统上不一定有解释器。另一方面,java已经在更多的系统上安装。您所说的一般来说更容易接受,但我认为他/她希望在远程系统上运行它,因为他/她可能没有安装其他程序的特权。Java也需要一个解释器,但Java解释器是用Java编写的,并且可移植性差很多(请尝试为您选择的JDK不支持的系统编译JVM)。相比之下,Python是用C编写的,因此,为您的平台编译Python可能只是开箱即用,或者可能只需要很少的补丁。大多数Linux系统(如果你不专注于PC市场的话,约占99%的计算机)都没有安装Java,而Python现在几乎是一种需求。根据什么标准衡量这是“最有效的”?考虑到你需要能够在任何远程系统上运行它,您可以找到已安装Java或轻松安装它,而无需担心大多数系统的平台和依赖性。而且它也不会花费太多的编译工作。与Python相比?我不这么认为。。。还有,我不是原来的海报,我是