这是我用PyInstaller编译python代码而不用手工编写的程序:
prog = raw_input('File to compile: ')
shutil.copy(prog,'C:\Users\Hydro\Desktop\Projects\Python\PyInstaller\\'+prog)
os.chdir('PyInstaller\\')
subprocess.call(['python', 'PyInstaller.py', prog, '--onefile'])
x = os.getpid()
print x
os.kill(x,9)
var = prog.split('.')
new_var = var[0]
os.chdir(new_var+'\\'+'dist')
shutil.copy(new_var+'.'+'exe','C:\Users\Hydro\Desktop\Projects\Python')
shutil.rmtree('C:\Users\Hydro\Desktop\Projects\Python\PyInstaller\\'+new_var)
os.remove('C:\Users\Hydro\Desktop\Projects\Python\PyInstaller\\'+prog)
raw_input('File Compiled. Press Enter to Exit')
由于进程正在使用我尝试删除的目录,因此无效。
我已经问过为什么在PyIRC上但无济于事。我也试过杀死PID,但是我杀了错误的。
有人能够帮助我或者告诉我为什么这会在编译后禁止我删除dir?所以我能想出一个解决方案吗?
答案 0 :(得分:1)
您的应用程序似乎是使用您尝试删除的目录的应用程序。通过调用os.chdir()
,您将在删除目录之前将当前工作目录更改为其他目录:
org_dir = os.getcwd()
... # your stuff
os.chdir(org_dir)
# delete the dir