从Python 2.7升级到3.3后,代码不再工作

从Python 2.7升级到3.3后,代码不再工作,python,Python,我开始使用Python3.3而不是2.7,我用来重新启动或关闭程序的一些代码行有问题 def restart_program(): python = sys.executable os.execl(python, python, * sys.argv) if __name__ == "__main__": answer = input("Restart or close program ") if answer.strip() in "Restart r

我开始使用Python3.3而不是2.7,我用来重新启动或关闭程序的一些代码行有问题

def restart_program(): 
    python = sys.executable
    os.execl(python, python, * sys.argv)

if __name__ == "__main__":
    answer = input("Restart or close program    ")
    if answer.strip() in "Restart restart".split():
        restart_program()
使用此选项时,会出现以下错误:

Fatal Python error: PyEval_RestoreThread: NULL tstate
Current thread 0x00002030:
File "C:\Python33\lib\os.py", line 531 in execl
File "C:\Users\user\desktop\filename", line 66 in restart_program
第66行是

os.execl(python, python, * sys.argv)
我不知道如何解决这个问题,我真的希望有人能找到解决办法

如果我写了一些非常简单的东西,比如下面的代码,那么它就可以正常工作

import math
import os
import sys

a = input ("enter a")
a = float (a)
b = 12

x = a+b
print (x)

def restart_program(): 
    python = sys.executable
    os.execl(python, python, * sys.argv)

if __name__ == "__main__":
    answer = input("Restart or close the program    ")
    if answer.strip() in ["Restart", "restart"]:
        restart_program()
我想我也可以在这里添加我的全部代码


试着对
Popen
通话进行评论,看看事情是否好转。但是,这并不是一个很好的打开文件的方法,因为它只在Windows上工作,并且只有在您为png文件设置了文件关联的情况下才能工作


我敢打赌,Python3比Python2更不愿意留下孤立的流处理程序之类的东西,所以吹走父进程会导致子进程(ren)窒息。如果注释掉
Popen
可以解决您的问题,请尝试跟踪您创建的所有子项,并在调用
execl
之前明确杀死它们。

您尝试过吗?第66行是os.execl(python,python,*sys.argv)。我知道2T3,但我不太明白如何使用它。我对整个编程行业都很陌生。从长远来看,您最好了解2.7和3.3之间的区别,然后实施它们。转换总是不确定的。
sys.executable
在2.x和3.x中给你带来了什么?您是否安装了2个Python,或者是否用3.x替换了2.x?那么,有没有办法在启动时修复2to3崩溃,这样我就可以尝试一下,或者我应该简单地找到另一行执行相同工作的代码?这次它只是崩溃了。给我一点时间,我会得到回溯回溯(最后一次调用):文件“C:\Users\kasutaja\Desktop\eksponentfunktsion.py”,第68行,在restart\u program()文件“C:\Users\kasutaja\Desktop\eksponentfunktsion.py”,第63行,在restart\u program os.execl(*(list(os.path.split(sys.executable))+sys.argv))文件“C:\Python33\lib\os.py”,第531行,在execl execv(file,args)FileNotFoundError:[Errno 2]没有这样的文件或目录文档在实际查看操作系统模块中的代码后,对其工作原理描述得很差。。。我现在明白为什么你的原稿是正确的了。问题可能出在您正在重新启动的程序正在执行的其他操作中。你的程序是多线程的吗?它还使用哪些库?数学库、系统库、操作系统库、子流程库、matplotlib库。我如何检查它是否是多线程的?你在用子进程做什么?