【问题标题】:Call python3 code from python2 code从 python2 代码调用 python3 代码
【发布时间】:2013-07-13 23:02:20
【问题描述】:

我正在使用 wxPython 工具包设计一个 GUI,这意味着它是用 python2 编写的。但是,我想将 python3 用于实际的应用程序代码。我将如何从 GUI 调用我的 python3 代码?

【问题讨论】:

    标签: python python-2.7 python-3.x


    【解决方案1】:
    1. 通过管道或套接字交谈

    2. 尽可能从__future__ 启用此类python 3 功能,或使用six 之类的库来编写与两者兼容的代码。

    3. 不要这样做。

    最后,你确定不能在 Python 3 中使用 wxPython 吗?在线文档中没有任何内容说您不能。

    【讨论】:

    • @MatthewG 那么,为什么要使用 python 3?
    • 我想使用 python3,因为它是该语言的最新版本。它从 2008 年就已经存在,真的没有理由用旧语言开发全新的应用程序。
    • @MatthewG 最新最好的不是理由。 Python 2 不是某种过时的语言 - 正如您的情况所表明的那样,它是一种积极开发库的语言,并且有大量 Python 3 不存在的库。
    • 我在 2011 年决定学习 Python,那时我还没有意识到仍然存在大量遗留的 Python2 代码。我被无数次告知只使用python2。在我学习python3的第一周,我就被人主动骂了,甚至考虑写python3代码。我已经习惯了。大多数人似乎只是接受这种先有鸡还是先有蛋的情况,这令人难以置信的失望和沮丧。我喜欢 Python,但说实话,这个社区非常糟糕。
    • @MatthewG 你是我听过的唯一一个这样说的人。无论如何,你没有理由不能只使用 python 2 - 在兼容性库和语言的相似性之间,这不应该是一个不合理的建议。您不必宣誓忠诚于一个版本或另一个版本。
    【解决方案2】:

    您可以将应用程序代码作为 shell 脚本运行。

    from subprocess import call
    exit_code = call("python3 my_python_3_code.py", shell=True)
    

    你也可以像往常一样传入终端参数。

    arg1 = "foo"
    arg2 = "bar"
    exit_code = call("python3 my_python_3_code.py " + arg1 + " " + arg2, shell=True)
    

    如果您想从应用程序收集更多信息,您可以捕获标准输出,如下所述:Capture subprocess output

    如果您想在两个方向上流畅地通信,最好使用管道或套接字。

    【讨论】:

    猜你喜欢
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 2014-05-15
    • 2021-07-10
    • 1970-01-01
    • 2019-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多