我已经用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
?
发布于 2021-04-21 01:46:51
我也想知道类似的事情,我偶然发现了一个别人问过同样问题的reddit thread,最终followed up注意到了一些有趣的发现。
正如您所注意到的,pyenv
似乎实际上并没有使用bin/activate
文件。他们没有说激活方法是什么,但像您一样,在那里添加环境变量没有任何结果。
最后,他们最终安装了autoenv,它标榜自己是基于目录的环境。它允许您在目录中创建一个.env文件,当您通过cd
连接到该目录时,它将运行.env文件。您可以将其用于环境变量,也可以向其添加任何其他内容。
我在autoenv页面上注意到,他们说你应该使用direnv,因为它有更好的功能,而且是更高质量的软件。这两种方法都不是特定于Python或pyenv的,如果您从目录外部调用python代码,它们可能无法工作。因为您使用的是pyenv,所以您很可能是从目录中运行代码,所以我认为这两种方法都很有可能工作。
https://stackoverflow.com/questions/63779259
复制相似问题