virtualenvwrapper - 环境变量不保存
Posted
技术标签:
【中文标题】virtualenvwrapper - 环境变量不保存【英文标题】:virtualenvwrapper - environment variables are not saving 【发布时间】:2018-06-04 04:21:25 【问题描述】:我在 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'
我已经读过这个变量应该在.virtualenvs/foo/bin/
的postactivate
文件中设置,但是那里什么都没有。
还好这只是一个简单的测试项目,但是当我使用virtualenvwrapper
时,如何确定环境变量会保存在我的下一个 virtualenv 中?
【问题讨论】:
【参考方案1】: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
【讨论】:
以上是关于virtualenvwrapper - 环境变量不保存的主要内容,如果未能解决你的问题,请参考以下文章
Linux 之 安装虚拟环境virtualenvwrapper
python虚拟环境管理包virtualenvwrapper
pip install virtualenv 和 virtualenvwrapper 时出现不支持的语言环境设置错误