我碰巧在执行不同版本的python时遇到了问题。我安装了python 2.7和2.5。如果我想使用2.5版本运行脚本,我只需要包含#!python2.5
即可。
现在我的问题是我的整个应用程序使用的是2.7。在2.7版本中使用PIL库不会生成正确的结果,因此我使用python 2.5版来使用字体生成图像。
我的主文件包含:
import func
if __name__=='__main__':
i=func.gen("Hey there")
i.save("img.png")
这会调用脚本func.py
中编写的函数#!python2.5
import Image,ImageDraw,ImageFont
def gen(txt):
im=Image.new('RGBA',(200,200))
font=ImageFont.truetype("abc.ttf",100)
draw = ImageDraw.Draw (im)
draw.text ( ( 0 , 0), txt, font=font, fill="#FFFFFF" )
return im
当我单独执行时,此脚本使用python2.5版本运行。 但是当我在主文件中调用它时,它运行2.7版本。任何人都可以提供解决方案吗?
答案 0 :(得分:1)
使用另一个python版本执行应用程序的一部分的唯一方法是在外部调用它。
这可以通过使用subprocess
或类似方法来实现。只要您在使用python2.7
启动第一个脚本时调用第二个脚本中的方法,它们就会被python2.7
执行。
第二种解决方案是实现一个"图像渲染守护进程"它与python2.5
一起运行,并由python2.7
应用程序通过套接字/ HTTP调用。
答案 1 :(得分:1)
我做到了。我在subprocess中使用了Popen。
p=Popen(['cmd', '/C', 'py -2.5 func.py'], stdout = PIPE)
pp= p.communicate()[0]