对于我的python项目,我使用的是Pipenv。在我的本地计算机上,我有一堆AWS环境变量,我不想让我的虚拟环境使用这些变量。
每次我的pipenv shell启动时,我都会取消设置变量-但出于某种原因,在每次计算机重新启动后,在激活pipenv shell时,我可以看到我的";"父";正在被注入到虚拟环境中。
有没有什么方法可以禁用这种行为,这样就不会有环境变量溢出到我的pipenv中?
有什么方法可以禁用这种行为,这样就不会有环境变量溢出到我的pipenv中吗?
不能简单地禁用此行为,因为它是Unix进程工作的基础:子进程从父进程继承环境。我们有几种方法可以回答你的问题;最简单的可能是利用pipenv对加载.env
文件的支持。如果pipenv
项目的根目录中存在.env
文件,则pipenv
将在运行时加载该文件。
例如,如果在我们的父环境中,我们有:
SOMEVAR=somevalue
ANOTHERVAR=anothervalue
export SOMEVAR ANOTHERVAR
通常,如果我们启动pipenv shell
,我们将在新环境中看到这些值:
$ pipenv shell
$ env | grep -E 'SOMEVAR|ANOTHERVAR'
ANOTHERVAR=anothervalue
SOMEVAR=somevalue
但是,如果我们在.env
文件中用空值覆盖这些值:
$ cat > .env <<EOF
> SOMEVAR=
> ANOTHERVAR=
> EOF
然后,当我们启动pipenv shell
:时,这将优先
$ pipenv shell
$ env | grep -E 'SOMEVAR|ANOTHERVAR'
ANOTHERVAR=
SOMEVAR=