本文整理汇总了Python中py_compile.compile函数的典型用法代码示例。如果您正苦于以下问题:Python compile函数的具体用法?Python compile怎么用?Python compile使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了compile函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_overiden_unchecked_hash_based_pyc
def test_overiden_unchecked_hash_based_pyc(self):
with util.create_modules('_temp') as mapping, \
unittest.mock.patch('_imp.check_hash_based_pycs', 'always'):
source = mapping['_temp']
pyc = self.util.cache_from_source(source)
with open(source, 'wb') as fp:
fp.write(b'state = "old"')
os.utime(source, (50, 50))
py_compile.compile(
source,
invalidation_mode=py_compile.PycInvalidationMode.UNCHECKED_HASH,
)
loader = self.machinery.SourceFileLoader('_temp', source)
mod = types.ModuleType('_temp')
mod.__spec__ = self.util.spec_from_loader('_temp', loader)
loader.exec_module(mod)
self.assertEqual(mod.state, 'old')
# Update the source file, which should be ignored.
with open(source, 'wb') as fp:
fp.write(b'state = "new"')
loader.exec_module(mod)
self.assertEqual(mod.state, 'new')
with open(pyc, 'rb') as fp:
data = fp.read()
self.assertEqual(int.from_bytes(data[4:8], 'little'), 0b1)
self.assertEqual(
self.util.source_hash(b'state = "new"'),
data[8:16],
)
示例2: copy_python
def copy_python():
if not os.path.exists(py_dir):
os.mkdir(py_dir)
for x in os.listdir(srcdir):
y = os.path.join(srcdir, x)
ext = os.path.splitext(x)[1]
if os.path.isdir(y) and x not in ('test', 'hotshot', 'distutils',
'site-packages', 'idlelib', 'lib2to3', 'dist-packages', '__pycache__'):
shutil.copytree(y, os.path.join(py_dir, x),
ignore=ignore_in_dirs)
if os.path.isfile(y) and ext in ('.py', '.so'):
shutil.copy2(y, py_dir)
#site_dest = os.path.join(py_dir, 'site-packages')
copy_site_packages(site_packages, site_dest)
create_site_py()
for x in os.walk(py_dir):
for f in x[-1]:
if f.endswith('.py'):
y = os.path.join(x[0], f)
rel = os.path.relpath(y, py_dir)
try:
py_compile.compile(y, cfile=y+'o',dfile=rel, doraise=True, optimize=2)
os.remove(y)
z = y+'c'
if os.path.exists(z):
os.remove(z)
except:
print ('Failed to byte-compile', y)
示例3: redo_pyc
def redo_pyc(egg):
if not os.path.isdir(egg):
return
for dirpath, dirnames, filenames in os.walk(egg):
for filename in filenames:
if not filename.endswith('.py'):
continue
filepath = os.path.join(dirpath, filename)
if not (os.path.exists(filepath+'c')
or os.path.exists(filepath+'o')):
# If it wasn't compiled, it may not be compilable
continue
# OK, it looks like we should try to compile.
# Remove old files.
for suffix in 'co':
if os.path.exists(filepath+suffix):
os.remove(filepath+suffix)
# Compile under current optimization
try:
py_compile.compile(filepath)
except py_compile.PyCompileError:
logger.warning("Couldn't compile %s", filepath)
else:
# Recompile under other optimization. :)
args = [sys.executable]
if __debug__:
args.append('-O')
args.extend(['-m', 'py_compile', filepath])
call_subprocess(args)
示例4: test_module_with_large_stack
def test_module_with_large_stack(module):
# create module w/list of 65000 elements to test bug #561858
filename = module + os.extsep + 'py'
# create a file with a list of 65000 elements
f = open(filename, 'w+')
f.write('d = [\n')
for i in range(65000):
f.write('"",\n')
f.write(']')
f.close()
# compile & remove .py file, we only need .pyc (or .pyo)
f = open(filename, 'r')
py_compile.compile(filename)
f.close()
os.unlink(filename)
# need to be able to load from current dir
sys.path.append('')
# this used to crash
exec 'import ' + module
# cleanup
del sys.path[-1]
for ext in 'pyc', 'pyo':
fname = module + os.extsep + ext
if os.path.exists(fname):
os.unlink(fname)
示例5: w_temp_zipfile
def w_temp_zipfile(self, created_paths, source=True, bytecode=True):
"""Create a temporary zip file for testing.
Clears zipimport._zip_directory_cache.
"""
import zipimport, os, shutil, zipfile, py_compile
example_code = 'attr = None'
TESTFN = '@test'
zipimport._zip_directory_cache.clear()
zip_path = TESTFN + '.zip'
bytecode_suffix = 'c'# if __debug__ else 'o'
zip_file = zipfile.ZipFile(zip_path, 'w')
for path in created_paths:
if os.sep in path:
directory = os.path.split(path)[0]
if not os.path.exists(directory):
os.makedirs(directory)
code_path = path + '.py'
try:
temp_file = open(code_path, 'w')
temp_file.write(example_code)
finally:
temp_file.close()
if source:
zip_file.write(code_path)
if bytecode:
py_compile.compile(code_path, doraise=True)
zip_file.write(code_path + bytecode_suffix)
zip_file.close()
return os.path.abspath(zip_path)
示例6: __init__
def __init__(self, element_id, title, namespace, script_path, consolidate):
check_namespace(namespace)
self.element_id = element_id
self.title = title
self.namespace = namespace
self.parent = None
self.root = None
if consolidate:
self.script = ''
self.extension = '.pyc'
py_compile.compile(script_path + ".py")
with open(script_path + ".pyc", 'rb') as reader:
compiled_binary = reader.read()
oslib.remove(script_path + ".pyc")
code = base64.b64encode(pickle.dumps(compiled_binary))
self.code = ucslib.transform(code)
else:
self.script = script_path + ".py"
self.code = ''
self.extension = '.py'
示例7: precompile_site_pyc
def precompile_site_pyc(self):
print "Pre-compiling python sources"
import py_compile
py_compile.compile(os.path.join(self.rsrcRoot, 'lib', 'python%s' % PYTHON_VERSION, 'site.py'))
print "Deleting python sources"
# These can go, since we have the pyc now
os.remove(os.path.join(self.rsrcRoot, 'lib', 'python%s' % PYTHON_VERSION, 'site.py'))
示例8: _get_codename
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
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 as 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)
示例9: test_script_compiled
def test_script_compiled(self):
with temp_dir() as script_dir:
script_name = _make_test_script(script_dir, "script")
py_compile.compile(script_name, doraise=True)
os.remove(script_name)
pyc_file = support.make_legacy_pyc(script_name)
self._check_script(pyc_file, pyc_file, pyc_file, script_dir, None, importlib.machinery.SourcelessFileLoader)
示例10: transpile
def transpile(filename, namespace, outdir=None):
print("Compiling %s ..." % filename)
py_compile.compile(filename)
transpiler = Transpiler(namespace)
transpiler.transpile(filename)
transpiler.write(outdir)
示例11: search_file
def search_file(self, filename):
self.total_files += 1
if not filename.endswith('.py'):
self.search_text(filename)
return
pyc = filename[:-2]+'pyc'
if not os.path.exists(pyc):
try:
py_compile.compile(filename)
except OSError:
# ignore permission error if the .pyc cannot be written
pass
if not os.path.exists(pyc):
# Invalid syntax...
self.search_text(filename, as_module=True)
return
with open(pyc, 'rb') as f:
# .pyc Header:
f.read(8)
try:
code = marshal.load(f)
except ValueError:
# Fail to load the byteload. For example, Python 3.4 cannot
# load Python 2.7 bytecode.
pass
else:
self.search_code(code, filename, [])
示例12: validate_file
def validate_file(self,z,fname,hook):
import py_compile
errors = 0
# Get the file contents
contents = z.open(fname).read()
# Unpack if the file is python or if we have a hook
# If python file, see if it compiles
if fname.endswith(".py") or hook:
fnew = "unpack/"+os.path.basename(fname)
with open(fnew,"w") as fb:
fb.write(contents)
# Verify python correctness if it is a python file
error_msg = None
if fname.endswith(".py"):
try:
py_compile.compile(fnew)
except py_compile.PyCompileError as e:
print("Compile error: "+str(e))
error_msg = str(e)
errors += 1
# If this is a text file, complain if it is RTF
print("check ",fname,contents[0:10])
if fname.endswith(".txt") and contents.startswith(r"{\rtf"):
print("*** {0} is a RTF file; it should be a text file".format(fname))
errors += 1
if hook:
hook(fnew,error_msg=error_msg)
return errors
示例13: make_plugins
def make_plugins(self):
"""
Package built-in plugins into ZIP archives.
"""
if isdir('@plugins/'):
mkdir(os.path.join(self.build_exe, 'plugins'))
for file_or_directory in os.listdir(expandPath('@plugins/')):
plugin = os.path.join(expandPath('@plugins/'), file_or_directory)
if isdir(plugin):
distutils.log.info('packaging plugin: %s', file_or_directory)
zippath = os.path.join(self.build_exe, 'plugins', '%s.zip' % file_or_directory)
with zipfile.ZipFile(zippath, 'w', zipfile.ZIP_STORED) as zipf:
for root, dirs, files in os.walk(plugin):
if not root.endswith('__pycache__'):
for filename in files:
path = expandPath(os.path.join(root, filename))
if path.endswith('.py'):
new_path = '%s.pyc' % rstrip(path, '.py')
py_compile.compile(path, new_path)
arcname = os.path.join(file_or_directory, os.path.relpath(new_path, plugin))
zipf.write(new_path, arcname)
fremove(new_path)
else:
arcname = os.path.join(file_or_directory, os.path.relpath(path, plugin))
zipf.write(path, arcname)
示例14: make_zip_pkg
def make_zip_pkg(zip_dir, zip_basename, pkg_name, script_basename,
source, depth=1, compiled=False):
unlink = []
init_name = make_script(zip_dir, '__init__', '')
unlink.append(init_name)
init_basename = os.path.basename(init_name)
script_name = make_script(zip_dir, script_basename, source)
unlink.append(script_name)
if compiled:
init_name = py_compile.compile(init_name, doraise=True)
script_name = py_compile.compile(script_name, doraise=True)
unlink.extend((init_name, script_name))
pkg_names = [os.sep.join([pkg_name]*i) for i in range(1, depth+1)]
script_name_in_zip = os.path.join(pkg_names[-1], os.path.basename(script_name))
zip_filename = zip_basename+os.extsep+'zip'
zip_name = os.path.join(zip_dir, zip_filename)
zip_file = zipfile.ZipFile(zip_name, 'w')
for name in pkg_names:
init_name_in_zip = os.path.join(name, init_basename)
zip_file.write(init_name, init_name_in_zip)
zip_file.write(script_name, script_name_in_zip)
zip_file.close()
for name in unlink:
os.unlink(name)
#if test.support.verbose:
# zip_file = zipfile.ZipFile(zip_name, 'r')
# print 'Contents of %r:' % zip_name
# zip_file.printdir()
# zip_file.close()
return zip_name, os.path.join(zip_name, script_name_in_zip)
示例15: test_missing_py_file_during_run
def test_missing_py_file_during_run(self):
# PyPy2 doesn't run bare .pyc files.
if env.PYPY and env.PY2:
self.skip("PyPy2 doesn't run bare .pyc files")
# Create two Python files.
self.make_file("mod.py", "a = 1\n")
self.make_file("main.py", "import mod\n")
# Make one into a .pyc, and remove the .py.
py_compile.compile("mod.py")
os.remove("mod.py")
# Python 3 puts the .pyc files in a __pycache__ directory, and will
# not import from there without source. It will import a .pyc from
# the source location though.
if not os.path.exists("mod.pyc"):
pycs = glob.glob("__pycache__/mod.*.pyc")
self.assertEqual(len(pycs), 1)
os.rename(pycs[0], "mod.pyc")
# Run the program.
cov = coverage.Coverage()
cov.start()
import main # pragma: nested # pylint: disable=import-error,unused-variable
cov.stop() # pragma: nested
# Put back the missing Python file.
self.make_file("mod.py", "a = 1\n")
report = self.get_report(cov).splitlines()
self.assertIn("mod.py 1 0 100%", report)