我在 ubuntu 上遇到 virtualenvwrapper
问题。
我正在处理简单的 Django 项目 foo
。我决定从 settings.py
中移动 SECRET_KEY
并将其保存为环境变量。一切顺利:
在 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'
我读到这个变量应该在 .virtualenvs/foo/bin/
的 postactivate
文件中设置,但那里什么也没有。
幸运的是,这只是一个简单的测试项目,但我如何确保在使用 virtualenvwrapper
时环境变量将保存在我的下一个 virtualenv 中?
最佳答案
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
关于python - virtualenvwrapper - 环境变量不保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47925819/