Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可在远程系统上运行的便携式python应用程序_Python_Portability - Fatal编程技术网

可在远程系统上运行的便携式python应用程序

可在远程系统上运行的便携式python应用程序,python,portability,Python,Portability,我需要生成一个独立的可移植python应用程序,并在远程系统上运行,即使在远程系统中,python解释器也没有安装,或者版本不同 其目的是将python脚本打包为一个应用程序,将其传输到远程系统,并将其作为一个独立的应用程序运行,而不需要任何依赖项 我们在Python世界中有这样的方法吗?以前有人做过类似的事情吗 冻结是游戏的名称 下面是一个使用PyInstaller的示例 示例脚本test.py: #/usr/bin/env蟒蛇3 #-*-编码:utf-8-*- 从functools导入red

我需要生成一个独立的可移植python应用程序,并在远程系统上运行,即使在远程系统中,python解释器也没有安装,或者版本不同

其目的是将python脚本打包为一个应用程序,将其传输到远程系统,并将其作为一个独立的应用程序运行,而不需要任何依赖项


我们在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应用程序。您可以按照以下步骤操作

  • 从Jython.org(一个python到jar的编译器)安装JDK和VisadJython
  • 在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在任何地方移植和运行它。

    因为您需要的可移植性甚至超过Python已经提供的功能,正如您所提到的,Python解释器可能在远程系统上不存在,所以最合适的方法是将其编译为Java应用程序。您可以按照以下步骤操作

  • 从Jython.org(一个python到jar的编译器)安装JDK和VisadJython
  • 在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将其移植到任何地方并运行。

    有一种叫做
    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相比?我不这么认为。。。还有,我不是原来的海报,我是