我正在尝试使用Python(2.7),flask,apache2,mod_wsgi和Enthought Canopy虚拟环境(使用Canopy随附的canopy_cli
命令行界面创建)创建一个网站。我之前已经做过,dreamhost上的实时版本似乎可以与他们的passenger_wsgi shenanigans一起运行。
我正在尝试在家里的旧笔记本电脑上开发服务器。我用同样的方法设置了venv。我不知道要在WSGI文件中插入什么以使其使用此虚拟环境。对于正常的虚拟环境,env / bin /目录中有一个“ activate_this.py”脚本,而Canopy venv中没有。
在dreamhost上,他们建议在wsgi文件中使用以下语法:
INTERP = os.path.join(os.environ['HOME'], 'project', 'env', 'bin', 'python')
if sys.executable != INTERP:
os.execl(INTERP, INTERP, *sys.argv)
sys.path.append(os.getcwd())
这在passenger_wsgi中工作正常,但是当我在我的开发服务器上使用mod_wsgi运行它时,出现错误:
脚本头过早结束:dev.wsgi
/ home / user / project / env / bin / python:无法打开文件'mod_wsgi':[Errno 2]没有这样的文件或目录
因此,我想我的选择是使用virtualenv在开发服务器上创建一个普通的虚拟环境(该虚拟环境将具有可以正常方式激活的activate_this.py脚本),或者学习如何在我的家用计算机上设置passenger_wsgi。
也就是说,除非有人成功完成此操作并且可以告诉我如何让wsgi脚本/烧瓶网站在Canopy虚拟环境中运行,否则除非有人这样做?
最佳答案
继续阅读:
http://code.google.com/p/modwsgi/wiki/VirtualEnvironments
Apache下的mod_wsgi模块使用Python作为嵌入式系统,因此执行os.execl()毫无意义。使用os.getcwd()也没有任何意义,因为工作目录将不在您的源代码所在的位置。
无论如何,请阅读该链接以了解如何在Apache / mod_wsgi中设置虚拟环境。