我在ubuntu上遇到virtualenvwrapper
的问题。
我正在处理简单的 Django 项目foo
。我已决定从SECRET_KEY
移动settings.py
并将其另存为环境变量。一切顺利:
在bash中我已进入
export SECRET_KET=['...']
我settings.py
已输入:
SECRET_KEY = os.environ['SECRET_KEY']
此外,我测试了该应用正常运行,一切正常。
BUT
我在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
的{{1}}文件中设置,但那里什么都没有。
幸运的是,这只是一个简单的测试项目,但是如何在使用.virtualenvs/foo/bin/
时确保环境变量将保存在我的下一个virtualenv中?
答案 0 :(得分: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