Make a zip file out of a directory containing python modules.
116 def zipdir(directory, no_pyc = False):
117 log = logging.getLogger(
"zipdir")
118 if not os.path.isdir(directory):
119 raise OSError(20,
"Not a directory", directory)
120 msg =
"Zipping directory '%s'"
122 msg +=
" (without pre-compilation)"
123 log.info(msg, directory)
124 filename = os.path.realpath(directory +
".zip")
127 if os.path.exists(filename):
128 zipFile = open(filename,
"r+b")
133 zipFile = open(filename,
"ab")
137 if zipfile.is_zipfile(filename):
138 infolist = zipfile.ZipFile(filename).infolist()
141 (added, modified, untouched, removed) =
_zipChanges(directory, infolist)
142 if added
or modified
or removed:
144 z = zipfile.PyZipFile(tempBuf,
"w", zipfile.ZIP_DEFLATED)
145 for f
in added + modified + untouched:
146 src = os.path.join(directory, f)
149 log.debug(
"adding '%s'", f)
153 if os.path.exists(src +
'c'):
154 log.debug(
"removing old .pyc for '%s'", f)
156 log.debug(
"adding '%s'", f)
157 z.writepy(src, os.path.dirname(f))
160 zipFile.write(tempBuf.getvalue())
162 log.info(
"File '%s' closed", filename)
164 log.info(
"Nothing to do on '%s'", filename)
165 except UnicodeDecodeError, x:
166 log.error(
"Wrong encoding in file '%s':", src)
168 log.error(
"Probably you forgot the line '# -*- coding: utf-8 -*-'")