我对ubuntu上的virtualenvwrapper有问题。
我在做一个简单的Django项目。我决定将fooSECRET_KEY移到settings.py并将其保存为环境变量。一切顺利:
在巴什我已经进入

export SECRET_KET=['...']

settings.py中输入:
SECRET_KEY = os.environ['SECRET_KEY']


但是
在我再次使用bash中的workon foo命令开始处理project之后,我尝试使用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中?

最佳答案

export命令标记要与任何新派生的子进程一起导出的环境变量,因此它允许子进程继承所有标记的变量,但不保留它。If you want the variable to be permanently available in your virtual environment you have to add it manually to the postactivate script:

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/

10-09 16:44
查看更多