在Windows 7 prof 64位上使用python 2.7的简单测试用例:
通过python我在目录中 checkout 一个git项目,比方说c:/temp/project
之后,我用python命令将其删除

shutil.rmtree('c:/temp/project')

命令后,该文件夹为空(无 stash 文件),但由于以下错误,无法将其自行删除:
WindowsError: [Error 32] The process cannot access the file because it is being used by another process: 'C:\\temp\\project'

我已经检查过了,那时git没有运行(我什至尝试了sleep(10)来确定)。
我已经尝试过以下解决方案:

What user do python scripts run as in windows?

但它不起作用,同样的错误。
尝试了os.system('rmdir'),但存在相同的错误。
尝试过win32api.SetFileAttributes()函数,但存在相同的错误。
如果我通过资源管理器删除该文件夹,那没有问题。

我该如何解决这个问题?

最佳答案

OP在错误的目录中运行...但是我发现使用GitPython出现此线程是有问题的;似乎很常见,因为git-python如果不采用一些奇怪的方式来清理,就会持有 repo 的句柄:

import gc, stat

gc.collect()
your_repo_obj.git.clear_cache()

# now this will succeed:
shutil.rmtree(your_repo_dir)

对这些体操的需求既是由于错误,又是设计使然。此错误描述了原因:
https://github.com/gitpython-developers/GitPython/issues/553

09-30 20:19