我正在尝试存储一个Python可以读取的环境变量作为字典。如果这是一个坏主意,请让我知道你的建议,我渴望学习。我担心如果我将数据存储为许多环境变量,它可能会变得难以管理。
我编写了一个Raspberry Pi来解锁一扇门,它是基于Twilio号码的来电的来电ID,它工作得很好。我想在Github上分享我的代码以获得反馈,但我不想与世界分享我的电话号码列表,所以我试图将其保存为环境变量,然后让Python读取它。
电话号码在这样的Python字典中。
building_admins = {
"+27792955555": "De Wet",
"+27722855555": "Marysol",
"+27878085555": "Blomerus",
}
我试图将其保存为Ubuntu 14.04上的环境变量
export BUILDING_ADMINS='{
"+27792955555": "De Wet",
"+27722855555": "Marysol",
"+27878085555": "Blomerus",
}'
1)我无法让Linux保存环境变量,有什么方法可以让它工作吗?
2)我觉得一定有更好的方法来做到这一点,我走错了方向,但我似乎没有找到与谷歌是解决我所面临的问题。请指出我在正确的方向。
7条答案
按热度按时间col17t5w1#
我不知道这是不是你要找的东西,但我在尝试将字典保存为Linux环境变量以在我的应用程序上使用它时,最终出现在这里。
我所做的是将它保存为这样的字符串:
然后在你的python代码中读取它,并使用这个将它转换为字典(摘自:Convert a String representation of a Dictionary to a dictionary?):
如果你输入
你应该看到你的字符串现在是一个dict。
希望这对其他人有帮助!
gdx19jrr2#
环境变量不是脚本用户想要设置的东西。使用
json
模块和一个文件:当推送到GitHub时,不要提交
numbers
文件。也许提交一个示例文件,然后将真实的的文件添加到.gitignore
中。yizd12fk3#
如果你选择使用环境,你应该将Python字典序列化为JSON,并在设置/获取环境变量时转储/加载它。你可以使用
os
模块的environ
属性访问环境。你可以使用json
模块转储/加载JSON。如果有这样的事情,你可能需要注意环境变量的最大长度。如果我是你,我会使用一个sqlite数据库,见https://docs.python.org/2/library/sqlite3.html。这将给予你持久性,一个定义的模式,和一个很好的接口来处理你的数据。
lfapxunr4#
有一个名为环境的选项,不幸的是,出口的方式与您想要的略有不同,但我会建议您,因为可以为您或其他人提供替代方案(我需要改天再做)。
https://pypi.org/project/environs/
您可以通过终端导出,甚至创建
.env
文件在代码中:
结果:
一个三个三个一个
aiazj4mn5#
我建议你使用
environ
,因为这个库做了一些额外的安全检查,并且已经看到了各种各样的用例。https://pypi.org/project/environs/
您的
config.py
x一个一个一个一个x一个一个二个x
vx6bjr1n6#
由于我不想插入新的包环境,我尝试了所有其他公开的解决方案,但在Python 3.6中,没有一个对我有效。
我把下面的env变量转换成dict对象的解决方案是:
验证码:
输出:
这对我来说很好用(没有多余的导入)!:)
cu6pst1q7#
这是可能的!去做吧
这是一个有点复杂,但工作!