人们可以像普通用户那样访问服务器(实际上被监禁),并且目前他们build议下载他们需要的任何python包, setup.py build
它们,然后将它们的位置添加到sys.path
。
如果没有virutalenv,有没有办法使easy_install和pip安装软件包到一个目录(在$PYTHONPATH
) ~
?
或者,你可以设置一个virtualenv对于一个给定的用户来说总是处于活动状态,无论是在shell中,还是repo到Apache和mod_wsgi?
总之,如何最好地解决安装网站包的权限问题?
为了在shell中自动获得virtualenv,每次用户login时都应该获取bin/activate
脚本。您可以在创build用户时创build默认virtualenv环境。 或者,你可以直接在用户的.bash_login
, .zshrc
或其他任何地方将virtualenv的python解释器的path添加到$PATH
variables中。
Virtualenv在激活时会修改两个环境variables。 首先,它会将{virtualenv}/bin
添加到您的$PATH
,其次,它会定义$VIRTUAL_ENV
variables,告诉您在哪里设置了virtualenv。 所以你可以尝试通过设置这些variables来模仿Apache的行为。 最后你应该使用virtualenv下载的virtualenv的python解释器,它具有所有必要的path设置。
在它的手中mod_wsgi
有一些configuration选项可以帮助你做到这一点。 使用WSGIPythonPath
应该足够了。 你也可以考虑使用WSGIPythonEggs
。
但是请注意,您应该保护初始设置不被用户修改,但可以通过运行apache的用户访问。