在OpenShift的书中使用Python 3.3

时间:2014-05-02 00:05:19

标签: python python-3.x openshift

OpenShift最近出版了一本书,#34; OpenShift入门"。这对刚开始的人来说是一个很好的指南。

在第3章中,他们展示了如何修改模板应用程序以使用Python 2.7和Flask。我们的要求是Python 3.3。

在第19页,wsgi.py的一个修改是:execfile(virtualenv,dict( file = virtualenv))。 execfile在3.x中被废除了。 StackOverflow中有关于如何翻译的例子,但我不清楚如何将这些应用于这种情况。

有没有人对此问题有任何见解?

2 个答案:

答案 0 :(得分:4)

this question所示,您可以替换

execfile(virtualenv, dict(__file__=virtualenv))

通过

exec(compile(open(virtualenv, 'rb').read(), virtualenv, 'exec'), dict(__file__=virtualenv))

在我看来,最好将其分解为几个更简单的部分。我们还应该为文件处理::

使用上下文处理程序
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)

以这种方式打破它也会使调试更容易(实际上:可能)。我还没有对此进行测试,但它应该可行。

答案 1 :(得分:0)

如果您在Python3的wsgi.py文件中遇到virtualenv设置问题,我已经解决了删除它的问题。

这是我的wsgi.py文件并且正在运行

#!/usr/bin/python

from flaskapp import app as application

if __name__ == '__main__':
    from wsgiref.simple_server import make_server
    httpd = make_server('0.0.0.0', 5000, application)
    # Wait for a single request, serve it and quit.
    #httpd.handle_request()
    httpd.serve_forever()