我在Ubuntu 12.04上配置了Apache以使用WSGI运行我的Python Flask Web应用程序。这里是/ 000-缺省的/ etc/apache2的/启用站点-的一部分:Python Flask WSGI文件忽略了用户的环境变量
<VirtualHost *>
WSGIDaemonProcess 3dkit user=3dkit group=3dkit threads=5
WSGIScriptAlias /3dkit /3dkit/kit.wsgi
WSGIPassAuthorization On
<Location /3dkit>
WSGIProcessGroup 3dkit
</Location>
...
这里是/3dkit/kit.wsgi:
import os
import sys
sys.path.insert(0, '/3dkit')
print 'user =', os.environ['USER']
from kit import app as application
打印命令失败,出现异常
KeyError: 'USER'
然而,在终端窗口此命令:
sudo -u 3dkit printenv USER
按预期输出“3dkit”。
这不仅仅是这个环境变量。无论我如何设置环境变量,无论是在/home/3dkit/.profile还是在/ etc/environment中,还是其他任何我能想到的方式,它都会在我的WSGI文件中被忽略。我能做到的唯一方法就是显式调用os.environ并在WSGI文件本身中设置一个环境变量。
谁能告诉我我做错了什么?
你是如何设置环境变量的?你是否'导出'它可以在shell外部使用? –
在/home/3dkit/.profile的情况下,是的,我使用了导出。在/ etc/environment的情况下,按照https://help.ubuntu.com/community/EnvironmentVariables。 –