virtualenvwrapper - 环境变量没有保存

问题描述 投票:1回答:1

我在ubuntu上有virtualenvwrapper的问题。

我正在研究简单的Django项目foo。我决定从SECRET_KEY移动settings.py并将其保存为环境变量。一切顺利:

在bash我进入了

export SECRET_KET=['...']

settings.py我输入了:

SECRET_KEY = os.environ['SECRET_KEY']

此外,我测试了该应用程序正在运行,一切正常。

我在bash中再次使用workon foo命令开始处理项目后,我试图用python manage.py runserver运行服务器并且SECRET_KEY无效。我得到的错误是:

    ...
    SECRET_KEY = os.environ['SECRET_KEY']
  File "/home/user/.virtualenvs/foo/lib/python3.6/os.py", line 669, in __getitem__
    raise KeyError(key) from None
KeyError: 'SECRET_KEY'

我已经读过这个变量应该在postactivate.virtualenvs/foo/bin/文件中设置,但那里什么都没有。

幸运的是,这只是一个简单的测试项目,但是如何在使用virtualenvwrapper时确保环境变量将保存在我的下一个virtualenv中?

python django python-3.x virtualenv virtualenvwrapper
1个回答
7
投票

export命令标记要与任何新分叉的子进程一起导出的环境变量,因此它允许子进程继承所有标记的变量但不保留它。如果您希望变量在虚拟环境中永久可用,则必须手动将其添加到postactivate脚本中:

echo 'export SECRET_KET=KJGH768&^jhgJg' >> /home/user/.virtualenvs/foo/bin/postactivate

但是,一旦离开virtualenv,你必须取消设置变量以避免任何冲突,如下所示:

echo 'unset SECRET_KET' >> /home/user/.virtualenvs/foo/bin/predeactivate
© www.soinside.com 2019 - 2024. All rights reserved.