我已经运行了一个基本的“ hello world” Flask应用程序。
我在使用Apache 2.4的Ubuntu 14.04上。我已经安装了mod_wsgi。
我创建了一个~/web/piFlask/venv/
以容纳安装了flask的virtualenv创建的Python2。
但是,我希望我的flaskapp导入我编写的Python3.x模块。
我需要怎么做才能做到这一点?
我尝试创建一个~/web/piFlask/venv3/
并修改~/web/piFlask/piFlask.wsgi
:
import os, sys
PROJECT_DIR = '/home/pi/web/piFlask'
activate_this = os.path.join(PROJECT_DIR, 'venv3/bin', 'activate_this.py')
execfile(activate_this, dict(__file__=activate_this))
sys.path.insert(0, PROJECT_DIR)
from piFlask import app as application
application.debug = True
但是我认为这还不够。这个.wsgi实际上是一个将由mod_wsgi执行的Python文件,我确定它将使用Py2.x解释器来执行。
因此,如果我正确理解,则mod_wsgi会启动系统Python以执行此.wsgi,这反过来会启动我的~/web/piFlask/venv/
解释器以实际处理请求。
我想我可以说服mod_wsgi使用系统Python3或我自己的venv3 / ...通过WSGIPythonPath /home/pi/web/piFlask/venv3/lib/python3.4/site-packages
在/etc/apache2/mods-available/wsgi.conf中进行设置
但是我在某处找到一条指令,说您必须为Py3编译mod_wsgi,而最底层很快就会解决此问题。
正确,mod_wsgi需要针对特定的Python版本进行编译,因为它实际上不会执行“ python”可执行文件。相反,Python库链接到mod_wsgi。
最终结果是您无法在使用Python 2解释器运行的应用程序中混合使用Python 3代码。
您将不得不考虑使您的代码在Python 2和3下都可运行,然后可以选择要使用的代码,并使用针对所选版本编译的mod_wsgi版本。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句