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

2024-10-01 17:27:48 发布

您现在位置:Python中文网/ 问答频道 /正文

问题:

是否可以将我用Python2.7编写的模块导入到我编写的3.4程序中?在

背景:

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

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


Tags: 模块字符串代码import程序stringtkinter语句
2条回答

您可以使您的Python2.7代码与3.4兼容—这样您就可以从3.4导入它并使用相同的类和函数。在

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

print 1

要使用子进程运行它,请执行以下操作:

^{pr2}$

在stdout中可以得到以下输出:

1

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

事实上,使您的代码与这两个版本兼容是可能的。最明显的一个可能更烦人的是print语句。在

假设您有以下Python 2.x代码:

name = "beautiful"
print "Hallo"
print "I mean, hallo ", name

第一行在两个版本中都可以正常工作。第二行,可以变成:

^{pr2}$

这两个版本都兼容。请注意,您可以使用单引号或双引号。在

最后一行需要一些技巧,否则,python2也将打印括号。在Python的模块中,要使它在中以同样的方式从Python导入。在

总之,这是双重兼容代码:

#Works in Python 2.x or Python 3.x
from __future__ import print_function

print("Hallo")
print("I mean, hallo ", name)

有关详细信息,请参阅此cheat sheet。在

相关问题 更多 >

    热门问题