问题:
是否可以将我在 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/