virtualenvwrapper - 环境变量不保存
virtualenvwrapper - environment variables are not saving
我在 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
我在 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