人们可以以普通用户(实际上是被监禁)的身份访问服务器,并且建议他们 - 目前 - 下载他们需要的任何 Python 包,setup.py build
然后将他们的位置添加到sys.path
。
如果没有 virutalenv,是否有办法让 easy_install 和 pip 将包安装到$PYTHONPATH
内部的目录中~
?
或者,您是否可以设置一个始终对给定用户处于活动状态的虚拟环境,无论是在 shell 中还是与 Apache 和 mod_wsgi 相关?
简而言之,如何最好地解决安装站点包时的权限问题?
答案1
要使虚拟环境在 shell 中自动可用,您应该在bin/activate
每次用户登录时都获取其脚本。您可以在创建用户时创建默认虚拟环境的同时执行此操作。或者,您只需将虚拟环境的 Python 解释器的路径添加到$PATH
用户中的变量中.bash_login
,.zshrc
或者其他任何位置。
Virtualenv 在激活时会修改两个环境变量。首先,它会将文件添加{virtualenv}/bin
到您的$PATH
,其次,它会定义$VIRTUAL_ENV
变量来告诉您 virtualenv 的确切设置位置。因此,您可以通过设置这些变量来尝试在 Apache 中模仿它的行为。最后,您应该使用随 virtualenv 下载的 virtualenv 的 python 解释器,该解释器已设置所有必要的路径。
mod_wsgi
它有一些配置选项可以帮助你实现这一点。使用WSGIPythonPath
。您可以考虑使用WSGIPythonEggs
也一样。
但请注意,您应该保护初始设置不被用户修改,但可由运行 apache 的用户可以访问。