OpenShift最近出版了一本书,#34; OpenShift入门"。这对刚开始的人来说是一个很好的指南。
在第3章中,他们展示了如何修改模板应用程序以使用Python 2.7和Flask。我们的要求是Python 3.3。
在第19页,wsgi.py的一个修改是:execfile(virtualenv,dict( file = virtualenv))。 execfile在3.x中被废除了。 StackOverflow中有关于如何翻译的例子,但我不清楚如何将这些应用于这种情况。
有没有人对此问题有任何见解?
答案 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()