5

Simple test case with python 2.7 on windows 7 prof 64 bits: via python I checkout a git project in a directory, let's say, c:/temp/project. Afterwards I delete it with the python command

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

After the command, the folder is empty (no hidden files) but it cannot be removed it self because of the following error:

WindowsError: [Error 32] The process cannot access the file because it is being used by another process: 'C:\\temp\\project'

I've checked and git is not running at that moment (I've even tried a sleep(10) to be sure). I've tried this solution:

What user do python scripts run as in windows?

but it doesn't work, same error. Tried a os.system('rmdir') but same error. Tried win32api.SetFileAttributes() function but same error. If I delete the folder via explorer, there's no problem.

How can I solve the problem?

Community
  • 1
  • 1
marco
  • 1,628
  • 1
  • 22
  • 31

2 Answers2

3

The OP was running in the wrong dir ... but i found this thread for a problem using GitPython; seems like a common case, as git-python will hold handles to your repo if you don't clean up in some odd ways:

import gc, stat

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

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

the need for these gymnastics are due to both a bug, and by design. This bug describes the reasons: https://github.com/gitpython-developers/GitPython/issues/553

some bits flipped
  • 1,874
  • 3
  • 21
  • 35
0

You are probably executing the Python code inside the folder you are trying to remove.

geertjanvdk
  • 3,270
  • 22
  • 26