我在使用PythonAnywhere时遇到了非常令人沮丧的问题。每当我需要运行manage.py时,我已经设法通过做一些hacky工作来启动和运行我的站点但是现在我需要设置一个自动化任务,这不再是一个选项。
问题在于,在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的文件来解决这个问题,该文件包含我的DATABASES设置,并将数据库名称包含在我的settings.py文件旁边的单引号中,然后在我的settings.py文件中插入以下代码设置我的DATABASES设置:
try:
from production_settings import DATABASES
except ImportError:
pass
同样,这不起作用。我曾尝试过使用PythonAnywhere寻求支持,但似乎没有任何支持,所以我来这里是希望有人知道如何解决这个问题。我现在落后了......我该怎么办???
答案 0 :(得分:0)
听起来你需要在env文件中的值周围添加单引号。