def byte_compile(self, path, optimize=False, force=False, prefix=None):
dpath = cache_from_source(path, not optimize)
logger.info('Byte-compiling %s to %s', path, dpath)
if not self.dry_run:
if force or self.newer(path, dpath):
if not prefix:
diagpath = None
else:
assert path.startswith(prefix)
diagpath = path[len(prefix):]
py_compile.compile(path, dpath, diagpath, True) # raise error
self.record_as_written(dpath)
return dpath
python类compile()的实例源码
def compiler(path):
"""A generator for compiling files to .pyc"""
def justlist(arg, directory, names):
pynames=[os.path.join(directory, n) for n in names
if n.endswith('.py')]
arg.extend(pynames)
all=[]
os.path.walk(path, justlist, all)
remaining=len(all)
i=zip(all, range(remaining-1, -1, -1))
for f, remaining in i:
py_compile.compile(f)
yield remaining
def byte_compile(self, path, optimize=False, force=False, prefix=None):
dpath = cache_from_source(path, not optimize)
logger.info('Byte-compiling %s to %s', path, dpath)
if not self.dry_run:
if force or self.newer(path, dpath):
if not prefix:
diagpath = None
else:
assert path.startswith(prefix)
diagpath = path[len(prefix):]
py_compile.compile(path, dpath, diagpath, True) # raise error
self.record_as_written(dpath)
return dpath
def _init_regex():
global _wordchars_re, _squote_re, _dquote_re
_wordchars_re = re.compile(r'[^\\\'\"%s ]*' % string.whitespace)
_squote_re = re.compile(r"'(?:[^'\\]|\\.)*'")
_dquote_re = re.compile(r'"(?:[^"\\]|\\.)*"')
def compile_dir(dir, maxlevels=10, ddir=None,
force=0, rx=None, quiet=0):
"""Byte-compile all modules in the given directory tree.
Arguments (only dir is required):
dir: the directory to byte-compile
maxlevels: maximum recursion level (default 10)
ddir: the directory that will be prepended to the path to the
file as it is compiled into each byte-code file.
force: if 1, force compilation, even if timestamps are up-to-date
quiet: if 1, be quiet during compilation
"""
if not quiet:
print 'Listing', dir, '...'
try:
names = os.listdir(dir)
except os.error:
print "Can't list", dir
names = []
names.sort()
success = 1
for name in names:
fullname = os.path.join(dir, name)
if ddir is not None:
dfile = os.path.join(ddir, name)
else:
dfile = None
if not os.path.isdir(fullname):
if not compile_file(fullname, ddir, force, rx, quiet):
success = 0
elif maxlevels > 0 and \
name != os.curdir and name != os.pardir and \
os.path.isdir(fullname) and \
not os.path.islink(fullname):
if not compile_dir(fullname, maxlevels - 1, dfile, force, rx,
quiet):
success = 0
return success
def _get_codename(self, pathname, basename):
"""Return (filename, archivename) for the path.
Given a module name path, return the correct file path and
archive name, compiling if necessary. For example, given
/python/lib/string, return (/python/lib/string.pyc, string).
"""
file_py = pathname + ".py"
file_pyc = pathname + ".pyc"
file_pyo = pathname + ".pyo"
if os.path.isfile(file_pyo) and \
os.stat(file_pyo).st_mtime >= os.stat(file_py).st_mtime:
fname = file_pyo # Use .pyo file
elif not os.path.isfile(file_pyc) or \
os.stat(file_pyc).st_mtime < os.stat(file_py).st_mtime:
import py_compile
if self.debug:
print "Compiling", file_py
try:
py_compile.compile(file_py, file_pyc, None, True)
except py_compile.PyCompileError,err:
print err.msg
fname = file_pyc
else:
fname = file_pyc
archivename = os.path.split(fname)[1]
if basename:
archivename = "%s/%s" % (basename, archivename)
return (fname, archivename)
def _get_codename(self, pathname, basename):
"""Return (filename, archivename) for the path.
Given a module name path, return the correct file path and
archive name, compiling if necessary. For example, given
/python/lib/string, return (/python/lib/string.pyc, string).
"""
file_py = pathname + ".py"
file_pyc = pathname + ".pyc"
file_pyo = pathname + ".pyo"
if os.path.isfile(file_pyo) and \
os.stat(file_pyo).st_mtime >= os.stat(file_py).st_mtime:
fname = file_pyo # Use .pyo file
elif not os.path.isfile(file_pyc) or \
os.stat(file_pyc).st_mtime < os.stat(file_py).st_mtime:
import py_compile
if self.debug:
print "Compiling", file_py
try:
py_compile.compile(file_py, file_pyc, None, True)
except py_compile.PyCompileError,err:
print err.msg
fname = file_pyc
else:
fname = file_pyc
archivename = os.path.split(fname)[1]
if basename:
archivename = "%s/%s" % (basename, archivename)
return (fname, archivename)
def byte_compile(self, path, optimize=False, force=False, prefix=None):
dpath = cache_from_source(path, not optimize)
logger.info('Byte-compiling %s to %s', path, dpath)
if not self.dry_run:
if force or self.newer(path, dpath):
if not prefix:
diagpath = None
else:
assert path.startswith(prefix)
diagpath = path[len(prefix):]
py_compile.compile(path, dpath, diagpath, True) # raise error
self.record_as_written(dpath)
return dpath
def byte_compile(self, path, optimize=False, force=False, prefix=None):
dpath = cache_from_source(path, not optimize)
logger.info('Byte-compiling %s to %s', path, dpath)
if not self.dry_run:
if force or self.newer(path, dpath):
if not prefix:
diagpath = None
else:
assert path.startswith(prefix)
diagpath = path[len(prefix):]
py_compile.compile(path, dpath, diagpath, True) # raise error
self.record_as_written(dpath)
return dpath
def byte_compile(self, path, optimize=False, force=False, prefix=None):
dpath = cache_from_source(path, not optimize)
logger.info('Byte-compiling %s to %s', path, dpath)
if not self.dry_run:
if force or self.newer(path, dpath):
if not prefix:
diagpath = None
else:
assert path.startswith(prefix)
diagpath = path[len(prefix):]
py_compile.compile(path, dpath, diagpath, True) # raise error
self.record_as_written(dpath)
return dpath
def get_edit_apk(path, new_path, conf):
tempdir=tempfile.mkdtemp(prefix="tmp_pupy_")
try:
packed_payload=pack_py_payload(get_raw_conf(conf))
shutil.copy(path, new_path)
#extracting the python-for-android install tar from the apk
zf=zipfile.ZipFile(path,'r')
zf.extract("assets/private.mp3", tempdir)
zf.close()
with open(os.path.join(tempdir,"pp.py"),'w') as w:
w.write(packed_payload)
import py_compile
py_compile.compile(os.path.join(tempdir, "pp.py"), os.path.join(tempdir, "pp.pyo"))
print "[+] packaging the apk ... (can take 10-20 seconds)"
#updating the tar with the new config
updateTar(os.path.join(tempdir,"assets/private.mp3"), "service/pp.pyo", os.path.join(tempdir,"pp.pyo"))
#repacking the tar in the apk
with open(os.path.join(tempdir,"assets/private.mp3"), 'r') as t:
updateZip(new_path, "assets/private.mp3", t.read())
#signing the tar
try:
res=subprocess.check_output("jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore crypto/pupy-apk-release-key.keystore -storepass pupyp4ssword '%s' pupy_key"%new_path, shell=True)
except OSError as e:
if e.errno ==os.errno.ENOENT:
print "Please install jarsigner first."
sys.exit(1)
raise e
# -tsa http://timestamp.digicert.com
print(res)
finally:
#cleaning up
shutil.rmtree(tempdir, ignore_errors=True)
def _get_codename(self, pathname, basename):
"""Return (filename, archivename) for the path.
Given a module name path, return the correct file path and
archive name, compiling if necessary. For example, given
/python/lib/string, return (/python/lib/string.pyc, string).
"""
file_py = pathname + ".py"
file_pyc = pathname + ".pyc"
file_pyo = pathname + ".pyo"
if os.path.isfile(file_pyo) and \
os.stat(file_pyo).st_mtime >= os.stat(file_py).st_mtime:
fname = file_pyo # Use .pyo file
elif not os.path.isfile(file_pyc) or \
os.stat(file_pyc).st_mtime < os.stat(file_py).st_mtime:
import py_compile
if self.debug:
print "Compiling", file_py
try:
py_compile.compile(file_py, file_pyc, None, True)
except py_compile.PyCompileError,err:
print err.msg
fname = file_pyc
else:
fname = file_pyc
archivename = os.path.split(fname)[1]
if basename:
archivename = "%s/%s" % (basename, archivename)
return (fname, archivename)
test_filefinder2_importlib_import.py 文件源码
项目:filefinder2
作者: asmodehn
项目源码
文件源码
阅读 24
收藏 0
点赞 0
评论 0
def setUpClass(cls):
# we compile the bytecode with the testing python interpreter
import py_compile
source_py = os.path.join(os.path.dirname(__file__), 'nspkg', 'subpkg', 'bytecode_source.py')
dest_pyc = os.path.join(os.path.dirname(__file__), 'nspkg', 'subpkg', 'bytecode.pyc') # CAREFUL where
py_compile.compile(source_py, dest_pyc, doraise=True)
source_py = os.path.join(os.path.dirname(__file__), 'pkg', 'bytecode_source.py')
dest_pyc = os.path.join(os.path.dirname(__file__), 'pkg', 'bytecode.pyc') # CAREFUL where
py_compile.compile(source_py, dest_pyc, doraise=True)
test_filefinder2_importlib_import.py 文件源码
项目:filefinder2
作者: asmodehn
项目源码
文件源码
阅读 21
收藏 0
点赞 0
评论 0
def setUpClass(cls):
# we compile the bytecode with the testing python interpreter
import py_compile
source_py = os.path.join(os.path.dirname(__file__), 'nspkg', 'subpkg', 'bytecode_source.py')
dest_pyc = os.path.join(os.path.dirname(__file__), 'nspkg', 'subpkg', 'bytecode.pyc') # CAREFUL where
py_compile.compile(source_py, dest_pyc, doraise=True)
source_py = os.path.join(os.path.dirname(__file__), 'pkg', 'bytecode_source.py')
dest_pyc = os.path.join(os.path.dirname(__file__), 'pkg', 'bytecode.pyc') # CAREFUL where
py_compile.compile(source_py, dest_pyc, doraise=True)
import filefinder2 as importlib
importlib.activate()
# Note : filefinder2 will also be used with python3, but it should internally use importlib.
test_filefinder2_importlib_loadmodule.py 文件源码
项目:filefinder2
作者: asmodehn
项目源码
文件源码
阅读 21
收藏 0
点赞 0
评论 0
def setUpClass(cls):
# we compile the bytecode with the testing python interpreter
import py_compile
source_py = os.path.join(os.path.dirname(__file__), 'nspkg', 'subpkg', 'bytecode_source.py')
dest_pyc = os.path.join(os.path.dirname(__file__), 'nspkg', 'subpkg', 'bytecode.pyc') # CAREFUL where
py_compile.compile(source_py, dest_pyc, doraise=True)
source_py = os.path.join(os.path.dirname(__file__), 'pkg', 'bytecode_source.py')
dest_pyc = os.path.join(os.path.dirname(__file__), 'pkg', 'bytecode.pyc') # CAREFUL where
py_compile.compile(source_py, dest_pyc, doraise=True)
test_filefinder2_importlib_loadmodule.py 文件源码
项目:filefinder2
作者: asmodehn
项目源码
文件源码
阅读 28
收藏 0
点赞 0
评论 0
def setUpClass(cls):
# we compile the bytecode with the testing python interpreter
import py_compile
source_py = os.path.join(os.path.dirname(__file__), 'nspkg', 'subpkg', 'bytecode_source.py')
dest_pyc = os.path.join(os.path.dirname(__file__), 'nspkg', 'subpkg', 'bytecode.pyc') # CAREFUL where
py_compile.compile(source_py, dest_pyc, doraise=True)
source_py = os.path.join(os.path.dirname(__file__), 'pkg', 'bytecode_source.py')
dest_pyc = os.path.join(os.path.dirname(__file__), 'pkg', 'bytecode.pyc') # CAREFUL where
py_compile.compile(source_py, dest_pyc, doraise=True)
import filefinder2 as importlib
importlib.activate()
# Note : filefinder2 will also be used with python3, but it should internally use importlib.
def setUpClass(cls):
# we compile the bytecode with the testing python interpreter
import py_compile
source_py = os.path.join(os.path.dirname(__file__), 'nspkg', 'subpkg', 'bytecode_source.py')
dest_pyc = os.path.join(os.path.dirname(__file__), 'nspkg', 'subpkg', 'bytecode.pyc') # CAREFUL where ?
py_compile.compile(source_py, dest_pyc, doraise=True)
test_filefinder2_importlib_findspec.py 文件源码
项目:filefinder2
作者: asmodehn
项目源码
文件源码
阅读 14
收藏 0
点赞 0
评论 0
def setUpClass(cls):
# we compile the bytecode with the testing python interpreter
import py_compile
source_py = os.path.join(os.path.dirname(__file__), 'nspkg', 'subpkg', 'bytecode_source.py')
dest_pyc = os.path.join(os.path.dirname(__file__), 'nspkg', 'subpkg', 'bytecode.pyc') # CAREFUL where
py_compile.compile(source_py, dest_pyc, doraise=True)
source_py = os.path.join(os.path.dirname(__file__), 'pkg', 'bytecode_source.py')
dest_pyc = os.path.join(os.path.dirname(__file__), 'pkg', 'bytecode.pyc') # CAREFUL where
py_compile.compile(source_py, dest_pyc, doraise=True)
test_filefinder2_importlib_findspec.py 文件源码
项目:filefinder2
作者: asmodehn
项目源码
文件源码
阅读 15
收藏 0
点赞 0
评论 0
def setUpClass(cls):
# we compile the bytecode with the testing python interpreter
import py_compile
source_py = os.path.join(os.path.dirname(__file__), 'nspkg', 'subpkg', 'bytecode_source.py')
dest_pyc = os.path.join(os.path.dirname(__file__), 'nspkg', 'subpkg', 'bytecode.pyc') # CAREFUL where
py_compile.compile(source_py, dest_pyc, doraise=True)
source_py = os.path.join(os.path.dirname(__file__), 'pkg', 'bytecode_source.py')
dest_pyc = os.path.join(os.path.dirname(__file__), 'pkg', 'bytecode.pyc') # CAREFUL where
py_compile.compile(source_py, dest_pyc, doraise=True)
import filefinder2 as importlib
importlib.activate()
# Note : filefinder2 will also be used with python3, but it should internally use importlib.
test_filefinder2_importlib_importmodule.py 文件源码
项目:filefinder2
作者: asmodehn
项目源码
文件源码
阅读 19
收藏 0
点赞 0
评论 0
def setUpClass(cls):
# we compile the bytecode with the testing python interpreter
import py_compile
source_py = os.path.join(os.path.dirname(__file__), 'nspkg', 'subpkg', 'bytecode_source.py')
dest_pyc = os.path.join(os.path.dirname(__file__), 'nspkg', 'subpkg', 'bytecode.pyc') # CAREFUL where
py_compile.compile(source_py, dest_pyc, doraise=True)
source_py = os.path.join(os.path.dirname(__file__), 'pkg', 'bytecode_source.py')
dest_pyc = os.path.join(os.path.dirname(__file__), 'pkg', 'bytecode.pyc') # CAREFUL where
py_compile.compile(source_py, dest_pyc, doraise=True)