如何解决pyenv-virtualenv中的环境变量
我已经用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
吗?
解决方法
我想知道类似的事情,我偶然发现了一个 reddit thread 其他人也问了同样的问题,最终 followed up 注意到了一些有趣的发现。
如您所见,pyenv
似乎并未实际使用 bin/activate
文件。他们没有说激活方法是什么,但和你一样,在那里添加环境变量没有结果。
最后,他们安装了 autoenv,它标榜自己是基于目录的环境。它允许你在你的目录中创建一个 .env 文件,当你 cd
到那个目录时,它运行 .env 文件。您可以将其用于环境变量,也可以向其中添加任何其他内容。
我在 autoenv 页面上注意到他们说您可能应该改用 direnv,因为它具有更好的功能并且是更高质量的软件。这些都不是 Python 或 pyenv 特定的,如果您从目录外部调用 Python 代码,它们可能无法工作。由于您使用的是 pyenv,因此无论如何您都可能在目录中运行您的代码,因此我认为其中任何一个都可以正常工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。