如何让Python代码编写一次,在任何地方运行?

如何让Python代码编写一次,在任何地方运行?,python,ironpython,jython,Python,Ironpython,Jython,我正在学习Python。我的意图是: 用Python/Django编写Web应用程序 创建android应用程序(使用Jython) 为unix box编写一些python脚本 我有一种(不正确的)印象,因为Python是用Java(Jython)和.NET(IronPython)实现的,所以我可以简单地编写Python代码并通过解释器/编译器运行它 我想如果我用CPython编写一个helloworld并用Jython编译它,我会得到Java字节码。如果我将它与IronPython相结合,我会

我正在学习Python。我的意图是:

  • 用Python/Django编写Web应用程序
  • 创建android应用程序(使用Jython)
  • 为unix box编写一些python脚本
  • 我有一种(不正确的)印象,因为Python是用Java(Jython)和.NET(IronPython)实现的,所以我可以简单地编写Python代码并通过解释器/编译器运行它

    我想如果我用CPython编写一个helloworld并用Jython编译它,我会得到Java字节码。如果我将它与IronPython相结合,我会得到.NET字节码

    但现在看来,常规Python代码无法与Jython编译器/解释器一起使用。您必须导入一些奇特的Java特定模块。因此,这意味着,我必须使用Java模块/库为Java重新编写程序

    关于如何编写Python代码以使其在任何地方都能工作,有什么建议吗?Web、Unix、Android

    注意:我不想学习Java


    谢谢

    请更具体地说明您要做什么。您的常规Python代码是什么?有什么不符合您的预期


    根据,Jython是Python语言的一个实现。相同的Python代码应该在Jython或CPython上产生相同的结果。

    请更具体地说明您正在尝试做什么。您的常规Python代码是什么?有什么不符合您的预期

    print 'Hello, World!'
    
    根据,Jython是Python语言的一个实现。相同的Python代码应该在Jython或CPython上产生相同的结果

    print 'Hello, World!'
    
    这在任何名副其实的Python实现上都非常有效。大多数其他纯Python代码也是如此。在使用库时会变得棘手,因为Jython和IronPython缺少一些标准库模块,并且不支持C扩展。处理特定于平台的代码也会出现一些问题

    如果希望代码是可移植的,则需要从共享代码中删除尽可能多的依赖项。标准库通常是可以的(但两者都不完整),如果纯Python外部模块仅依赖于其他纯Python模块,则它们通常是可以的

    如果您确实需要检测它们,我相信规范检查是:

    if os.name == 'java': # Jython
    if sys.platform == 'cli': # IronPython
    

    Jython和IronPython都不会生成在Jython/IronPython不存在的情况下运行的程序。原则上这是可能的,甚至可以将Python的一个子集编译成纯字节码;前者需要在Python引擎中进行链接,后者需要限制可以使用Python的哪些部分

    如果有人为IronPython提供这个,我不会拒绝,我怀疑Jython团队也会拒绝,但我不会屏息以待。无论哪种选择都需要大量的工作

    这在任何名副其实的Python实现上都非常有效。大多数其他纯Python代码也是如此。在使用库时会变得棘手,因为Jython和IronPython缺少一些标准库模块,并且不支持C扩展。处理特定于平台的代码也会出现一些问题

    如果希望代码是可移植的,则需要从共享代码中删除尽可能多的依赖项。标准库通常是可以的(但两者都不完整),如果纯Python外部模块仅依赖于其他纯Python模块,则它们通常是可以的

    如果您确实需要检测它们,我相信规范检查是:

    if os.name == 'java': # Jython
    if sys.platform == 'cli': # IronPython
    

    Jython和IronPython都不会生成在Jython/IronPython不存在的情况下运行的程序。原则上这是可能的,甚至可以将Python的一个子集编译成纯字节码;前者需要在Python引擎中进行链接,后者需要限制可以使用Python的哪些部分


    如果有人为IronPython提供这个,我不会拒绝,我怀疑Jython团队也会拒绝,但我不会屏息以待。任何一个选项都需要大量工作。

    为什么点1、2、3缺少换行符?这样网站就不会把键算作换行符了吗?在习惯使用之前,降价可能会有点挑剔。添加更多的空白几乎总是让它更快乐。:)Jython和IronPython是Python实现。它们不导出Java或CLI字节码,而是实现Python语言。现在,我可以编译它并生成一些.class文件。这些.class文件可以部署在JVM上。JVM可以在UNIX、Windows和移动设备上运行。我不需要担心。类似地,我认为如果我编写Python代码并使用Jython编译器(而不是CPython解释器)编译它。我将获取.class文件。这些.class文件可以部署在任何设备上运行的任何JVM上。事实证明,.py文件不可能在没有一些特定于Java的修改的情况下在Jython中编译:(为什么第1、2、3点缺少换行符?这样站点就不会将键算作换行符了吗?在您习惯使用它之前,标记可能有点挑剔。添加更多的空格几乎总是让它更快乐。:)Jython和IronPython是Python实现。它们不导出Java或CLI字节码,而是实现Python语言。现在,我可以编译它并生成一些.class文件。这些.class文件可以部署在JVM上。JVM可以在UNIX、Windows和移动设备上运行。我不需要担心。类似地,我认为如果我编写Python代码并使用Jython编译器(而不是CPython解释器)编译它。我将获取.class文件。这些.class文件可以部署在任何设备上运行的任何JVM上。事实证明,.py文件不可能在没有一些特定于Java的修改的情况下在Jython中编译:(完全正确。但情况并非如此。让我解释一下:比方说,我使用标准库编写了一些Java代码。现在,我可以编译这些代码并生成一些.class文件。这些.class文件可以部署在JVM上。JVM可以运行