我在使用PythonAnywhere时遇到了非常令人沮丧的问题。每当我需要运行时,我已经设法通过做一些笨拙的解决方法来启动和运行我的网站 manage.py 但现在我需要设置一个自动化任务,这不再是一种选择。
问题在于,在PythonAnywhere中,数据库必须按照约定"user$database"命名。由于美元符号,每当我运行类似python manage.py inspectdb
的东西时,我都会收到标题中提到的错误,因为附加到签名的美元的任何内容都被 shell 假定为环境变量。
目前,我将生产环境变量存储在 .env 文件中,并将它们设置为 settings.py 文件。这在 Django 内部工作,但在 shell 中运行 manage.py 命令时不起作用。我试图通过在 manage.py 文件中添加以下代码来解决问题:
# update DATABASE_NAME to use $ instead of $ else bash commands wont work
os.putenv(
"DATABASE_NAME",
str(os.getenv("DATABASE_NAME")).replace('$', '\$')
)
但是,这并不能解决问题。
我还尝试通过创建一个名为 production_settings.py 的文件来解决此问题,该文件包含我的数据库设置,并将数据库名称括在单引号中与我的 settings.py 文件一起,然后在我的 settings.py 文件中插入以下代码以设置我的数据库设置:
try:
from production_settings import DATABASES
except ImportError:
pass
同样,这不起作用。我尝试过使用 PythonAnywhere 寻找支持,但似乎没有任何支持,所以我来到这里希望这里有人知道如何解决这个问题。我现在落后了好几天...我该怎么办???
这听起来像您需要在 env 文件中的值两边加上单引号。