我正在学习virtualenv
和mod_wsgi
这些是我最喜欢的文章:
https://code.google.com/p/modwsgi/wiki/VirtualEnvironments
(作者mod_wsgi
,格雷厄姆·杜普顿)。
http://www.dabapps.com/blog/introduction-to-pip-and-virtualenv-python/
我知道virtualenv
允许我拥有Python和Python包的独立实例。
但这与Apache
,mod_wsgi
和MongoDB
等内容有什么关系?
这些东西也可以包含在这个虚拟环境中吗?
我感兴趣的场景是苹果有一个“自我依赖”的本地应用程序(在其他系统上很容易安装) - virtualenv
似乎在某种程度上实现了这一点,但是Apache
,mod_wsgi
和MongoDB
仅存在于此更广泛的“系统级别”,还是存在于虚拟环境中?
答案 0 :(得分:0)
virtualenv
仅适用于python包,因此您无法在其中运行系统应用程序实例,例如apache 。
修改:正如@Graham Dumpleton所提到的,可以在virtualenv
内使用mod_wsgi-httpd安装apache httpd。但是,正如我之前所说的virtualenv用于python包,所以这是一个寻找/编写解决问题的包的问题。
话虽这么说,你可以让使用mod_wsgi的Apache利用virtualenv
。诀窍是,配置必须在python文件中完成。
假设您正在尝试设置django项目myproject
,该项目在名为myproject
的virtualenv中运行,这是您的wsgi.py
:
import os, sys, site
path = os.path.split(os.path.dirname(__file__))[0]
if path not in sys.path:
sys.path.append(path)
site.addsitedir('~/.virtualenvs/myproject/local/lib/python2.7/site-packages')
os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings'
activate_env=os.path.expanduser(
"~/.virtualenvs/myproject/bin/activate_this.py")
execfile(activate_env, dict(__file__=activate_env))
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
apache或mongodb的配置不会有任何不同,因为它们是系统范围内运行的服务。