nginx、uwsgi搭建web服务器,python 的os.environ.get()无法获取到环境变量

时间:2021-07-13 22:46:44
用nginx、uwsgi和flask搭建了一个web服务器,但是发现os.environ.get()无法获取环境变量了,直接在终端用os.environ.get()是可以的,我猜应该是uwsgi服务器没有加载系统的环境变量的缘故,怎么解决?????找了半天了,都没找到资料。。。。。

11 个解决方案

#1


不明白 nginx、uwsgi跟python 取环境变量有什么影响?  只否你的flask服务根本没启动? 看进程,放代码

#2


我都用flask写了好几年Web了,发布也是用的uwsgi,我一次都没遇到过需要用 os.environ.get() 的时候,你要这个做什么?
有什么需求是不是有其它方案?

#3


引用 2 楼 CDSoftwareWj 的回复:
我都用flask写了好几年Web了,发布也是用的uwsgi,我一次都没遇到过需要用 os.environ.get() 的时候,你要这个做什么?
有什么需求是不是有其它方案?

我是要把数据库连接信息什么的放到环境变量里面,但是 os.environ.get() 读取不到,现在只能放到本地文件了。。你用了这么久flask,请问lask中怎么获取uwsgi中配置的参数啊,能不能将数据库连接信息通过uwsgi的配置传给flask??

#4


引用 1 楼 uiuiy1 的回复:
不明白 nginx、uwsgi跟python 取环境变量有什么影响?  只否你的flask服务根本没启动? 看进程,放代码

是启动了的,地址: http://www.codenest.cn/,这个问题我在网上查好像的确是有的,但是没找到这是怎么回事,怎么解决。。。

#5


引用 3 楼 lzhui1987 的回复:
Quote: 引用 2 楼 CDSoftwareWj 的回复:

我都用flask写了好几年Web了,发布也是用的uwsgi,我一次都没遇到过需要用 os.environ.get() 的时候,你要这个做什么?
有什么需求是不是有其它方案?

我是要把数据库连接信息什么的放到环境变量里面,但是 os.environ.get() 读取不到,现在只能放到本地文件了。。你用了这么久flask,请问lask中怎么获取uwsgi中配置的参数啊,能不能将数据库连接信息通过uwsgi的配置传给flask??


flask为什么要用 uwsgi的设置???

#6


你的意思是不是如果不部署uwsgi,你的程序就跑不起来连接不上数据库????那你是怎么开发并测试的????

#7


flask 可以直接载入 config.py 配置文件,进行 flask设置,这东西和uwsgi一毛关系都木有
那你不用 uwsgi 部署 换 Gunicorn 是不是你还要找 Gunicorn的配置?

系统难道不是flask自成体系吗?不需要和部署环境有关吧

#8


引用 7 楼 CDSoftwareWj 的回复:
flask 可以直接载入 config.py 配置文件,进行 flask设置,这东西和uwsgi一毛关系都木有
那你不用 uwsgi 部署 换 Gunicorn 是不是你还要找 Gunicorn的配置?

系统难道不是flask自成体系吗?不需要和部署环境有关吧


我之前采用的是flask自带的那个cgi服务器调试,把数据库的账户和密码放到了操作系统的环境变量里,能够正常获取;后面部署到云服务器中了,采用flask+uwsgi+nginx,但是莫名奇妙获取不到系统的环境变量了。现在只能直接写到config.py里面

#9


配置写 py 文件里才是正路,我的 flask相关配置在 flask 指定的 config.py 里,
系统自己的配置在 app_config.py里,这样放那里,在什么环境下都没有问题
而且python自己引用和使用也非常方便 import进来直接就当常量用了

#10


flask 官方也是要求你写到 config.py里,还有好多flask插件也需要在这个文件里设置,你非要写到系统环境变量里,这不是找事么
flask-sqlalchemy插件配置写config.py里多方便

#11


其实在Flask Web开发17.5.2章节中有解决方案,在项目*目录下添加配置信息文件.env,然后在mange.py最开始处读取配置信息到环境变量os.enviro中

if os.path.exists('.env'):
    print('Importing environment from .env...')
    for line in open('.env'):
        var = line.strip().split('=')
        if len(var) == 2:
            os.environ[var[0]] = var[1]

.env配置内容如下:

MAIL_USERNAME=123456789@qq.com
MAIL_PASSWORD=abcdefg
FLASK_CONFIG=development
SECRET_KEY=secretstring

我自己也在这里找了几个小时问题,最终解决,特地来回复下,另外推荐下个人自己的小站
www.zhoulee.top  完全使用根据Flask Web开发   共同学习

#1


不明白 nginx、uwsgi跟python 取环境变量有什么影响?  只否你的flask服务根本没启动? 看进程,放代码

#2


我都用flask写了好几年Web了,发布也是用的uwsgi,我一次都没遇到过需要用 os.environ.get() 的时候,你要这个做什么?
有什么需求是不是有其它方案?

#3


引用 2 楼 CDSoftwareWj 的回复:
我都用flask写了好几年Web了,发布也是用的uwsgi,我一次都没遇到过需要用 os.environ.get() 的时候,你要这个做什么?
有什么需求是不是有其它方案?

我是要把数据库连接信息什么的放到环境变量里面,但是 os.environ.get() 读取不到,现在只能放到本地文件了。。你用了这么久flask,请问lask中怎么获取uwsgi中配置的参数啊,能不能将数据库连接信息通过uwsgi的配置传给flask??

#4


引用 1 楼 uiuiy1 的回复:
不明白 nginx、uwsgi跟python 取环境变量有什么影响?  只否你的flask服务根本没启动? 看进程,放代码

是启动了的,地址: http://www.codenest.cn/,这个问题我在网上查好像的确是有的,但是没找到这是怎么回事,怎么解决。。。

#5


引用 3 楼 lzhui1987 的回复:
Quote: 引用 2 楼 CDSoftwareWj 的回复:

我都用flask写了好几年Web了,发布也是用的uwsgi,我一次都没遇到过需要用 os.environ.get() 的时候,你要这个做什么?
有什么需求是不是有其它方案?

我是要把数据库连接信息什么的放到环境变量里面,但是 os.environ.get() 读取不到,现在只能放到本地文件了。。你用了这么久flask,请问lask中怎么获取uwsgi中配置的参数啊,能不能将数据库连接信息通过uwsgi的配置传给flask??


flask为什么要用 uwsgi的设置???

#6


你的意思是不是如果不部署uwsgi,你的程序就跑不起来连接不上数据库????那你是怎么开发并测试的????

#7


flask 可以直接载入 config.py 配置文件,进行 flask设置,这东西和uwsgi一毛关系都木有
那你不用 uwsgi 部署 换 Gunicorn 是不是你还要找 Gunicorn的配置?

系统难道不是flask自成体系吗?不需要和部署环境有关吧

#8


引用 7 楼 CDSoftwareWj 的回复:
flask 可以直接载入 config.py 配置文件,进行 flask设置,这东西和uwsgi一毛关系都木有
那你不用 uwsgi 部署 换 Gunicorn 是不是你还要找 Gunicorn的配置?

系统难道不是flask自成体系吗?不需要和部署环境有关吧


我之前采用的是flask自带的那个cgi服务器调试,把数据库的账户和密码放到了操作系统的环境变量里,能够正常获取;后面部署到云服务器中了,采用flask+uwsgi+nginx,但是莫名奇妙获取不到系统的环境变量了。现在只能直接写到config.py里面

#9


配置写 py 文件里才是正路,我的 flask相关配置在 flask 指定的 config.py 里,
系统自己的配置在 app_config.py里,这样放那里,在什么环境下都没有问题
而且python自己引用和使用也非常方便 import进来直接就当常量用了

#10


flask 官方也是要求你写到 config.py里,还有好多flask插件也需要在这个文件里设置,你非要写到系统环境变量里,这不是找事么
flask-sqlalchemy插件配置写config.py里多方便

#11


其实在Flask Web开发17.5.2章节中有解决方案,在项目*目录下添加配置信息文件.env,然后在mange.py最开始处读取配置信息到环境变量os.enviro中

if os.path.exists('.env'):
    print('Importing environment from .env...')
    for line in open('.env'):
        var = line.strip().split('=')
        if len(var) == 2:
            os.environ[var[0]] = var[1]

.env配置内容如下:

MAIL_USERNAME=123456789@qq.com
MAIL_PASSWORD=abcdefg
FLASK_CONFIG=development
SECRET_KEY=secretstring

我自己也在这里找了几个小时问题,最终解决,特地来回复下,另外推荐下个人自己的小站
www.zhoulee.top  完全使用根据Flask Web开发   共同学习