OpenShift recently published a book, "Getting Started with OpenShift". It is a good guide for someone just starting out.
In Chapter 3 they show how to modify a template application to use Python 2.7 and Flask. Our requirement is for Python 3.3.
On Page 19, one of the modifications to wsgi.py is: execfile(virtualenv, dict(file=virtualenv)). execfile was done away with in 3.x. There are examples in StackOverflow on how to translate but it is not clear to me how to apply those to this case.
Does anyone have any insight into this issue?
As indicated in this question, you can replace the line
execfile(virtualenv, dict(__file__=virtualenv))
by
exec(compile(open(virtualenv, 'rb').read(), virtualenv, 'exec'), dict(__file__=virtualenv))
In my opinion, it would be better to break this up into a few simpler pieces. Also we should use a context handler for the file handling::
with open(virtualenv, 'rb') as exec_file:
file_contents = exec_file.read()
compiled_code = compile(file_contents, virtualenv, 'exec')
exec_namespace = dict(__file__=virtualenv)
exec(compiled_code, exec_namespace)
Breaking it up in this way will also make debugging easier (actually: possible). I haven't tested this but it should work.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With