On 12/13/2011 10:59 AM, Andrea Crotti wrote:
So I have the following problem, I need something to copy a file to a
certain position
and restore it after.
So I wrote this simple context manager:
class WithCorrectEasyInstall(object):
def __enter__(self):
import pkg_resources
from shutil import copyfile
easy_install_file =
pkg_resources.resource_filename('psi.devsonly',
'windows_easy_install.pth')
self.global_easy_install =
'c:/python25/Lib/site-packages/easy-install.pth'
# can use mmap, a temporary file or just write to string
self.stored = open(self.global_easy_install).read()
logger.debug("copying the correct easy_install.pth file to the
global position")
copyfile(easy_install_file, self.global_easy_install)
def __exit__(self, type, value, traceback):
#TODO: make sure it's restored also when quitting in some
other ways
# restore the old file
open(self.global_easy_install, 'w').write(self.stored)
logger.debug("restoring the old easy_install.pth file")
The problem is that this is not executed for example when the program
is interrupted
with for example a KeyboardInterrupt.
But that's also an exception, why is it not caught by the context
manager?
And if there are better way to do what I'm trying to achieve they are
welcome :)
Alright it was probably a stupid idea to start with.
The problem is that if the easy_install is wrong even the imports in the
module
will not work, so I can't even start to do something.
Another possible option is to just add to the path everything contained
in that
correct easy_install.pth file.
Or is there a way to reload the path settings?
--
http://mail.python.org/mailman/listinfo/python-list