fix compiled app in py3

This commit is contained in:
ilvalle
2016-06-25 13:27:35 +02:00
parent 8aecaf4514
commit abf8d9fb27
3 changed files with 16 additions and 18 deletions
-2
View File
@@ -59,8 +59,6 @@ def app_pack(app, request, raise_ex=False, filenames=None):
w2p_pack(filename, apath(app, request), filenames=filenames)
return filename
except Exception as e:
import traceback
print(traceback.format_exc())
if raise_ex:
raise
return False
+6 -8
View File
@@ -44,18 +44,15 @@ from functools import reduce
logger = logging.getLogger("web2py")
from gluon import rewrite
from gluon.custom_import import custom_import_install
try:
import py_compile
except:
logger.warning('unable to import py_compile')
import py_compile
is_pypy = settings.global_settings.is_pypy
is_gae = settings.global_settings.web2py_runtime_gae
is_jython = settings.global_settings.is_jython
pjoin = os.path.join
marshal_header_size = 8 if PY2 else 12
TEST_CODE = \
r"""
def _TEST():
@@ -456,7 +453,8 @@ def save_pyc(filename):
"""
Bytecode compiles the file `filename`
"""
py_compile.compile(filename)
cfile = "%sc" % filename
py_compile.compile(filename, cfile=cfile)
def read_pyc(filename):
@@ -470,7 +468,7 @@ def read_pyc(filename):
data = read_file(filename, 'rb')
if not is_gae and data[:4] != imp.get_magic():
raise SystemError('compiled code is incompatible')
return marshal.loads(data[8:])
return marshal.loads(data[marshal_header_size:])
def compile_views(folder, skip_failed_views=False):
+10 -8
View File
@@ -97,14 +97,19 @@ def parse_version(version):
return version_tuple
def read_file(filename, mode='r'):
"""Returns content from filename, making sure to close the file explicitly
on exit.
"""
def open_file(filename, mode):
if PY2 or 'b' in mode:
f = open(filename, mode)
else:
f = open(filename, mode, encoding="utf8")
return f
def read_file(filename, mode='r'):
"""Returns content from filename, making sure to close the file explicitly
on exit.
"""
f = open_file(filename, mode)
try:
return f.read()
finally:
@@ -115,10 +120,7 @@ def write_file(filename, value, mode='w'):
"""Writes <value> to filename, making sure to close the file
explicitly on exit.
"""
if PY2:
f = open(filename, mode)
else:
f = open(filename, mode, encoding="utf8")
f = open_file(filename, mode)
try:
return f.write(value)
finally: