1

这是我使用 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,但我杀错了。

谁能帮助我或告诉我为什么这不允许我在编译后删除目录?所以我可以想出一个解决方案吗?

4

1 回答 1

1

似乎您的应用程序是使用您要删除的目录的应用程序。通过调用os.chdir(),您将在删除目录之前将当前工作目录更改为不同的目录:

org_dir = os.getcwd()

... # your stuff

os.chdir(org_dir)
# delete the dir
于 2013-03-13T12:05:52.103 回答