Python:如何将 2.7 模块导入 3.4 程序?

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

问题:

是否可以将我在 python 2.7 中编写的模块导入到我编写的 3.4 程序中?

背景:

我试过这样做,正如预期的那样,一旦它看到第一个 print "string literal" 语句而不是 3.4 的语句,它就会抛出一个 SyntaxError: Invalid Syntax 打印()。还有一些额外的不兼容代码片段,例如 import Tkinter 而不是 tkinter。 2.7 模块必须保留在 2.7 中,因为它的一个依赖项似乎在 3.X 中不起作用(switchvox api 的 python 绑定(bind))。

我正在构建一个显示应用程序,它将调用其配置文件中指定的任何模块,并在 tkinter 小部件中显示该模块的输出(一个字符串,或者将来可能是一个字典)。我的程序需要做的就是导入 2.7 模块并调用一个函数一次(每 x 秒)以接收该数据字符串。

最佳答案

您可以使您的 python 2.7 代码与 3.4 兼容 - 这样您就可以从 3.4 导入它并使用相同的类和函数。

要运行,您必须使用 python 2.7 在不同的进程上运行它 - 使用子进程。 假设 main27.py 有以下行:

print 1

要使用子流程运行它,您可以按照以下步骤操作:

import subprocess
cmd = [r'c:\python27\python.exe', 'main27.py']
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = p.communicate()

在 stdout 中你有以下输出:

1

对于更复杂的数据交换,您可以使用 json 或使用文件的 pickle。

关于Python:如何将 2.7 模块导入 3.4 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24538621/

相关文章:

python - 如何将多个选项卡放入单独的进程中

python - 如何将多个用户添加到 Django 中的单个 auth_group

python - 如果键为空则拆分元组并将对应值添加到其先前的元组值

python - 如何将 pandas.DataFrame.to_csv 保存到网络链接?

google-app-engine - 本地 GAE 数据存储在计算机关闭后不保留数据

python-3.x - Ubuntu 中的 Azure Pipeline 部署到 Debian 中的 Azure 应用服务

macos - numpy 未安装在 macOS 上

python - 一种在 Python 中按欧氏距离对复数进行排序的有效方法

python - 是否应该保护登录表单免受 CSRF 的影响?

python - 正则表达式 : How do I find a sub-string that is between two regular expression matches?