【问题标题】:Enviroment variables in pyenv-virtualenvpyenv-virtualenv 中的环境变量
【发布时间】:2020-09-07 14:11:14
【问题描述】:

我已经使用pyenv virtualenv 3.5.9 projectname 创建了一个虚拟环境,用于开发 django 项目。

如何设置环境变量供我的代码使用?

我尝试在/Users/developer/.pyenv/versions/projectname/bin/activate 中添加环境变量DATABASE_USER 像这样:

export DATABASE_USER="dbuser"

当我尝试echo $DATABASE_USER 时,会打印一个空字符串。

尝试安装zsh-autoenv

现在我可以echo $DATABASE_USER 并获取 .autoenv.zsh 文件中设置的值。

但我似乎无法让环境变量可用于我的 django 代码:

如果我在 virtualenv 内的 python shell 中尝试os.getenv('DATABASE_USER', ''),我会得到''

可能出了什么问题? zsh-autoenv 变量是否仅适用于 zsh shell 而不是 python manage.py shell

【问题讨论】:

    标签: python django virtualenv pyenv


    【解决方案1】:

    我想知道类似的事情,我偶然发现了一个reddit thread,其他人也问了同样的问题,最后followed up 注意到了一些有趣的发现。

    如您所见,pyenv 似乎并没有真正使用bin/activate 文件。他们没有说激活方法是什么,但是像你一样,在那里添加环境变量没有产生任何结果。

    最后,他们安装了autoenv,它自称是基于目录的环境。它允许您在您的目录中创建一个 .env 文件,并且当您 cd 到该目录时,它会运行 .env 文件。您可以将其用于环境变量,也可以添加任何其他内容。

    我在 autoenv 页面上注意到他们说您应该改用 direnv,因为它具有更好的功能并且是更高质量的软件。这些都不是 Python 或 pyenv 特定的,如果你从目录外部调用你的 python 代码,它们可能不起作用。由于您使用的是 pyenv,因此您可能无论如何都在目录中运行您的代码,所以我认为任何一个都可以工作。

    【讨论】:

      猜你喜欢
      • 2021-10-20
      • 2018-11-05
      • 2012-03-22
      • 2015-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-18
      • 2019-02-26
      相关资源
      最近更新 更多