【问题标题】:Running different python version运行不同的python版本
【发布时间】:2014-06-22 09:32:28
【问题描述】:

我在执行不同版本的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 版本。谁能提供解决方案?

【问题讨论】:

  • 你到底想做什么?你想在整个应用程序中使用 python 2.5 吗?还是python 2.7?还是两者兼而有之?
  • 我想在整个应用程序中使用 2.7,但是有一两个脚本我需要使用 2.5 版本。我该怎么做?

标签: python-2.7 python-2.5


【解决方案1】:

使用另一个 python 版本执行应用程序的一部分的唯一方法是在外部调用它。

这可以通过使用subprocess 或类似方法来实现。只要您在第一个脚本以python2.7 启动时调用第二个脚本中的方法,它们就会被python2.7 执行。

第二种解决方案是实现一个“图像渲染守护程序”,它使用python2.5 运行,并由您的python2.7 应用程序通过套接字/HTTP 调用。

【讨论】:

  • 你能举个例子吗?
【解决方案2】:

我做到了。我从子进程中使用了 Popen。

p=Popen(['cmd', '/C', 'py -2.5 func.py'], stdout = PIPE)
pp= p.communicate()[0]

【讨论】:

    最近更新 更多