gpt4 book ai didi

python - 在 virtualenv 中设置环境变量

转载 作者:IT老高 更新时间:2023-10-28 12:26:12 32 4
gpt4 key购买 nike

我有一个 Heroku 项目,它使用环境变量来获取其配置,但我首先使用 virtualenv 在本地测试我的应用程序。

有没有办法在virtualenv里面设置远程机器上定义的环境变量?

最佳答案

如果您使用 virtualenvwrapper (我强烈建议这样做),您可以使用 $VIRTUAL_ENV/bin/ 中的同名脚本定义不同的钩子(Hook)(preactivate、postactivate、predeactivate、postdeactivate)。你需要 postactivate 钩子(Hook)。

$ workon myvenv

$ cat $VIRTUAL_ENV/bin/postactivate
#!/bin/bash
# This hook is run after this virtualenv is activated.
export DJANGO_DEBUG=True
export S3_KEY=mykey
export S3_SECRET=mysecret

$ echo $DJANGO_DEBUG
True

如果您想将此配置保留在您的项目目录中,只需从您的项目目录创建一个符号链接(symbolic link)到 $VIRTUAL_ENV/bin/postactivate

$ rm $VIRTUAL_ENV/bin/postactivate
$ ln -s .env/postactivate $VIRTUAL_ENV/bin/postactivate

你甚至可以automate the creation of the symlinks每次使用 mkvirtualenv

清理停用

请记住,这不会自行清理。当您停用 virtualenv 时,环境变量将保持不变。要对称清理,您可以添加到 $VIRTUAL_ENV/bin/predeactivate

$ cat $VIRTUAL_ENV/bin/predeactivate
#!/bin/bash
# This hook is run before this virtualenv is deactivated.
unset DJANGO_DEBUG

$ deactivate

$ echo $DJANGO_DEBUG

请记住,如果将它用于可能已经在您的环境中设置的环境变量,那么取消设置将导致它们在离开 virtualenv 时完全取消设置。因此,如果这完全有可能,您可以将先前的值临时记录在某处,然后在停用时将其读回。

设置:

$ cat $VIRTUAL_ENV/bin/postactivate
#!/bin/bash
# This hook is run after this virtualenv is activated.
if [[ -n $SOME_VAR ]]
then
export SOME_VAR_BACKUP=$SOME_VAR
fi
export SOME_VAR=apple

$ cat $VIRTUAL_ENV/bin/predeactivate
#!/bin/bash
# This hook is run before this virtualenv is deactivated.
if [[ -n $SOME_VAR_BACKUP ]]
then
export SOME_VAR=$SOME_VAR_BACKUP
unset SOME_VAR_BACKUP
else
unset SOME_VAR
fi

测试:

$ echo $SOME_VAR
banana

$ workon myenv

$ echo $SOME_VAR
apple

$ deactivate

$ echo $SOME_VAR
banana

关于python - 在 virtualenv 中设置环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9554087/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com