我已经接触过这两个工具,但是它们似乎起着相同的作用。我的问题是,它们是否不同?如果有,如何?
在我的研究中,我觉得autoenv的作用域是全局的,而dotenv的作用更特定于应用程序。尽管这在许多情况下似乎是一个优势,但我想知道它是否还会造成无法预料的问题。
第二,使用一个相对于另一个有什么优点/缺点(或者我应该在不同情况下使用它们吗?)
我已经阅读了每个文档,但是无法找到比较两者的文章。相对而言,最近我对环境变量有了更全面的了解,如果我错过了文档中明显的内容,我深表歉意。
我主要是使用Flask开发Web应用程序,并在可能影响我选择的情况下在Heroku上进行部署。
谢谢。
答案 0 :(得分:1)
autoenv是用于cli的,用于在您进入包含.env文件的目录时启用环境。
Fx。如果每次CD到目录时都需要本地开发环境中的某些环境变量,则可以使用autoenv或更成熟的替代方法direnv。
dotenv在python中用于在运行目录或父目录中查找.env文件并加载其变量,这对服务非常有用,因为它们通常没有运行shell。
因此,对于您的heroku部署,您应该使用dotenv。
但是,如果您直接在heroku设置中放入config vars,则不需要任何一个,只需使用os.getenv:
from os import getenv
print(getenv('MY_ENVIRONMENT_VARIABLE'))