Pydev和运行Python脚本的shell之间的上下文执行差异

时间:2012-09-16 20:32:53

标签: python eclipse pydev wine

我在使用wine启动程序的Python脚本中遇到了问题。当脚本在shell(命令行)下运行时,在Eclipse / Pydev下执行脚本时启动的程序会崩溃。 我认为这应该是由于Pydev上下文执行。

我知道,对于enconding,从IDE和shell运行分别返回utf8和ascii,所以我认为有一些上下文配置差异可能会导致我的问题。 我也知道编码可以在菜单运行配置中改变 - > Common。但我没有找到任何解决我问题的设置。 有没有办法知道什么是上下文差异来解决我的问题?

为了更准确地解决这个问题,有一些准确性:

我有两个Windows程序(比如prog1.exe和prog2.exe),我必须从Python 2.7脚本一起启动。 我在Linux(Ubuntu 12.04)下工作,所以我使用wine来启动这些程序。 我编写了一个python脚本,使用subprocess.Popen()然后轮询来运行它们。

我使用Pydev和Eclipse(Indigo和Juno)来调试我的脚本。

以下是我的脚本:

from time import sleep
import subprocess

cmd_prog1 = ['wine', '/home/user/folder/to/progs/prog1.exe','--arg1','/home/user/folder/to/conf1/file1','--arg2','/home/user/folder/to/conf1/file2','--arg3','some_arg',....]
cmd_prog2 = ['wine', '/home/user/folder/to/progs/prog2.exe','--arg1','/home/user/folder/to/conf2/file1','--arg2','/home/user/folder/to/conf2/file2','--arg3','some_arg',....]

file1 = "/home/user/result/folder/file1.txt"
file2 = "/home/user/result/folder/file2.txt"

o_file1 = open(file1, "w+")
p_prog1 = subprocess.Popen(cmd_prog1,shell=False,stdout=o_file1,stderr=o_file1)
o_file2 = open(file2, "w+")
p_prog2 = subprocess.Popen(cmd_prog1,shell=False,stdout=o_file2,stderr=o_file2)

res_prog1 = None
res_prog2 = None
timer = 0
while res_prog1 == None or res_prog2 == None:
    timer += 1
    sleep(1)
    res_prog1 = p_prog1.poll()
    res_prog2 = p_prog2.poll()
    print timer

o_file1.close()
o_file2.close()

print res_prog1, res_prog2

当我从shell启动我的Python脚本时,它工作正常,prog1和prog2在8秒后返回0并且我在file1和file2中获得正确的日志。

当我从IDE启动脚本时,prog1和prog2在2秒后返回3,我收到以下错误:

Fatal Python error: buffer overflow in getpathp.c's joinpath()
fixme:msvcr90:__clean_type_info_names_internal (0x1e1f9bc8) stub

最后一条消息也存在于正确的行为中,但实际上并不是问题

感谢您的回复

0 个答案:

没有答案