如何关闭 oTree 中的调试模式?

How can I turn off the debug mode in oTree?

我正在尝试在生产模式下 运行 来自 Otree(基于 django 和 Python 的网络平台)的网络应用程序 (debug = false)。我找不到变量 OTREE_PRODUCTION 的位置。

有一个方法,不记得了,但是你可以反转条件: 在 settings.py 中: 转:

如果 environ.get('OTREE_PRODUCTION') 不在 {None, '', '0'} 中: 调试 = 假 别的: 调试 = 真

至:

如果 environ.get('OTREE_PRODUCTION') 不在 {None, '', '0'} 中: 调试 = 真 别的: 调试 = 假

OTREE_PRODUCTION 变量是系统环境变量,这意味着它的范围大于您的 Otree 项目。因此,设置起来比较复杂。下面描述了如何为 Mac 或其他 UNIX 系统执行此操作。

您可以按照前面的答案建议反转条件,但如果您真的想进行实验并将其放在像 Heroku 这样的远程服务器上,这是不可取的。那是因为您可能需要实际调试并且您不希望仅仅为了调试而重新启动(在远程服务器上编译)。如果正确使用环境变量,就可以避免这个问题。

以下步骤适用于任何与 Otree 相关的环境变量,例如 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYOTREE_AUTH_LEVELOTREE_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,第二行将此变量和值广播给任何可能使用它的对象。更详细的answer is here.

要真正广播出这些值,需要重新启动shell。您可以通过 运行ning source ~/.bash_profile

现在您可以通过运行以下命令检查变量的值。

echo $OTREE_PRODUCTION

$表示要“回显”的东西是一个变量。没有它,它只是 returns 相同的文本。

在 Heroku 上设置 OTREE_PRODUCTION=1:

您甚至可能不需要或不想在本地执行此操作,因为您可以告诉 Heroku 在生产模式下 运行,而本地版本仍处于调试状态。假设你是all set up on Heroku,你可以运行下面的命令。通过这一行,您可以在生产服务器上在调试 (OTREE_PRODUCTION=0) 和生产 (OTREE_PRODUCTION=1) 之间来回切换。

heroku config:set OTREE_PRODUCTION=1

然后您可以使用

查看所有环境变量
heroku config