I'm trying to run a web application from Otree (a web platform based on django and Python) in production mode(debug = false). I can't find where the variable OTREE_PRODUCTION is located.
2 回答
OTREE_PRODUCTION 变量是一个系统环境变量,这意味着它的范围大于您的 Otree 项目。因此,设置起来更加复杂。下面描述了如何为 Mac 或其他 UNIX 系统执行此操作。
您可以按照前面的答案建议反转条件,但如果您真的想进行实验并将其放在像 Heroku 这样的远程服务器上,这是不可取的。那是因为您可能需要实际调试,并且您不想为了做到这一点而必须重新启动(在远程服务器上编译)。如果正确使用环境变量,就可以避免这个问题。
以下步骤适用于任何与 Otree 相关的环境变量,例如AWS_ACCESS_KEY_ID
、AWS_SECRET_ACCESS_KEY
、OTREE_AUTH_LEVEL
和OTREE_ADMIN_PASSWORD
。
在 Mac 上本地设置 OTREE_PRODUCTION:
您需要做的就是修改.bash_profile
文件。这告诉您的终端有关如何在其中运行的一般信息。它位于您的主目录中并且是隐藏的,因此名称中的前导句点。使用您选择的文本编辑器打开文件。
vim ~/.bash_profile
~/
指定文件位于您的主目录中。在该文件中,您将看到如下所示的其他行,指定调用它时要运行的 python 版本。不要改变这些。
# Setting PATH for Python 2.7
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"
export PATH
您需要做的就是添加下面的两行并保存文件。
OTREE_PRODUCTION=1
export OTREE_PRODUCTION
第一行将变量设置为 True,第二行将这个变量和值广播给任何可能使用它的东西。更详细的答案在这里。
要真正广播出这些值,需要重新启动 shell。你可以通过运行来做到这一点source ~/.bash_profile
现在您可以通过运行以下命令来检查变量的值。
echo $OTREE_PRODUCTION
$
表示要“回显”的事物是一个变量。没有它,它只会返回相同的文本。
在 Heroku 上设置 OTREE_PRODUCTION=1:
您甚至可能不需要或不想在本地执行此操作,因为您只需告诉 Heroku 在生产模式下运行,而本地版本保持调试状态。假设您已经在 Heroku 上进行了设置,您可以运行以下命令。使用这一行,您可以在生产服务器上的调试 ( OTREE_PRODUCTION=0
) 和生产 ( )之间来回切换。OTREE_PRODUCTION=1
heroku config:set OTREE_PRODUCTION=1
然后,您可以查看所有环境变量
heroku config
有一种方法,不记得了,但是您可以将条件反转:在settings.py中:转:
如果 environ.get('OTREE_PRODUCTION') 不在 {None, '', '0'} 中:DEBUG = False else: DEBUG = True
至:
如果 environ.get('OTREE_PRODUCTION') 不在 {None, '', '0'} 中:DEBUG = True else: DEBUG = False