All*_*ack 5 python import python-2.7 python-3.x
是否可以将我在python 2.7中编写的模块导入到我编写的3.4程序中?
我已经尝试过执行此操作,并且如预期的那样SyntaxError: Invalid Syntax,一旦看到第一个print "string literal"语句而不是3.4的语句,它就会抛出a print()。还有一些其他不兼容的代码段,例如import Tkinter代替tkinter。2.7模块必须保留在2.7中,因为它的依赖项之一似乎在3.X(switchvox api的python绑定)中不起作用。
我正在构建一个显示应用程序,它将调用其配置文件中指定的任何模块,并在tkinter小部件中显示该模块的输出(字符串,或将来可能是字典)。我的程序需要做的就是导入2.7模块并调用一个函数一次(每x秒)以接收该数据字符串。
您可以使您的 python 2.7 代码与 3.4 兼容 - 这样您就可以从 3.4 导入它并使用相同的类和函数。
要运行,您必须使用 python 2.7 - 使用子进程在不同的进程上运行它。假设 main27.py 有以下行:
print 1
Run Code Online (Sandbox Code Playgroud)
要使用子进程运行它,请执行以下操作:
import subprocess
cmd = [r'c:\python27\python.exe', 'main27.py']
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = p.communicate()
Run Code Online (Sandbox Code Playgroud)
与标准输出相比,您有以下输出:
1
Run Code Online (Sandbox Code Playgroud)
对于更复杂的数据交换,您可以使用 json 或 pickle 使用文件。
| 归档时间: |
|
| 查看次数: |
3188 次 |
| 最近记录: |