dev*_*.Im 2 django environment-variables
因为我的 django 项目,我遇到了困难。
谁可以帮忙?
我要感谢你的帮助。
.env在项目根路径中设置
SECRET_KEY=exampleKey
DEBUG=False
DB_ENGINE=django.db.backends.mysql
DB_NAME=example
DB_USER=admin
...Blah Blah
Run Code Online (Sandbox Code Playgroud)
项目settings.py
import os
import environ
env = environ.Env(DEBUG=(bool, False), )
environ.Env.read_env()
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
SECRET_KEY = env('SECRET_KEY')
DEBUG = env('DEBUG')
...Blah Blah
Run Code Online (Sandbox Code Playgroud)
当运行该项目时,我收到此错误消息。
Django_workspace/asone/asone/.env doesn't exist - if you're not configuring your environment separately, create one.
"environment separately, create one." % env_file)
raise KeyError(key) from None
KeyError: 'SECRET_KEY'
During handling of the above exception, another exception occurred:
/Django_workspace/asone/venv/lib/python3.7/site-packages/environ/environ.py", line 277, in get_value
raise ImproperlyConfigured(error_msg)
django.core.exceptions.ImproperlyConfigured: Set the SECRET_KEY environment variable
Run Code Online (Sandbox Code Playgroud)
我很难,因为我是 django 初学者。
谁可以帮忙?我要感谢你的帮助。
.PS
非常感谢您的回答。对不起。我告诉你,我错过了一些事情。
我设置了一个包以在项目中django-environ使用。.env
pip install django-environ
Run Code Online (Sandbox Code Playgroud)
我有什么遗漏的吗?
解决这个问题还需要哪些信息?
.PS
设置 python-dotenv 包
SECRET_KEY=exampleKey
DEBUG=False
DB_ENGINE=django.db.backends.mysql
DB_NAME=example
DB_USER=admin
...Blah Blah
Run Code Online (Sandbox Code Playgroud)
更改设置.py
import os
import environ
env = environ.Env(DEBUG=(bool, False), )
environ.Env.read_env()
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
SECRET_KEY = env('SECRET_KEY')
DEBUG = env('DEBUG')
...Blah Blah
Run Code Online (Sandbox Code Playgroud)
然后我遇到了这个错误消息。
Watching for file changes with StatReloader
Exception in thread django-main-thread:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/logging/config.py", line 562, in configure
handler = self.configure_handler(handlers[name])
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/logging/config.py", line 735, in configure_handler
result = factory(**kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/logging/handlers.py", line 148, in __init__
BaseRotatingHandler.__init__(self, filename, mode, encoding, delay)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/logging/handlers.py", line 55, in __init__
logging.FileHandler.__init__(self, filename, mode, encoding, delay)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/logging/__init__.py", line 1087, in __init__
StreamHandler.__init__(self, self._open())
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/logging/__init__.py", line 1116, in _open
return open(self.baseFilename, self.mode, encoding=self.encoding)
FileNotFoundError: [Errno 2] No such file or directory: '/Users/haemil/Desktop/Back-end workspace/Django_workspace/asone/logs/logfile'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/threading.py", line 926, in _bootstrap_inner
self.run()
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "/Users/haemil/Desktop/Back-end workspace/Django_workspace/asone/venv/lib/python3.7/site-packages/django/utils/autoreload.py", line 53, in wrapper
fn(*args, **kwargs)
File "/Users/haemil/Desktop/Back-end workspace/Django_workspace/asone/venv/lib/python3.7/site-packages/django/core/management/commands/runserver.py", line 110, in inner_run
autoreload.raise_last_exception()
File "/Users/haemil/Desktop/Back-end workspace/Django_workspace/asone/venv/lib/python3.7/site-packages/django/utils/autoreload.py", line 76, in raise_last_exception
raise _exception[1]
File "/Users/haemil/Desktop/Back-end workspace/Django_workspace/asone/venv/lib/python3.7/site-packages/django/core/management/__init__.py", line 357, in execute
autoreload.check_errors(django.setup)()
File "/Users/haemil/Desktop/Back-end workspace/Django_workspace/asone/venv/lib/python3.7/site-packages/django/utils/autoreload.py", line 53, in wrapper
fn(*args, **kwargs)
File "/Users/haemil/Desktop/Back-end workspace/Django_workspace/asone/venv/lib/python3.7/site-packages/django/__init__.py", line 19, in setup
configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
File "/Users/haemil/Desktop/Back-end workspace/Django_workspace/asone/venv/lib/python3.7/site-packages/django/utils/log.py", line 75, in configure_logging
logging_config_func(logging_settings)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/logging/config.py", line 799, in dictConfig
dictConfigClass(config).configure()
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/logging/config.py", line 570, in configure
'%r' % name) from e
ValueError: Unable to configure handler 'file'
Run Code Online (Sandbox Code Playgroud)
我有什么遗漏的吗?
(python标准库)中没有environ模块。stdlib因此,我通过运行检查是否有名为“environ”的第三方模块,该模块安装了它,但是当我在pypi 网站pip install environ上检查时,我看不到任何有效的解释。我觉得保养得不好
所以我得出的结论是你的环境配置有点奇怪。
这是我的建议
通过运行安装python-dotenvpip install python-dotenv模块。有很多.env模块,但我认为这是最受欢迎、维护良好的模块之一。
确保您的.env文件位于所在目录中settings.py。除非另有说明,否则将在同一目录中setting.py加载文件.env
从此更改您的代码
import os
import environ
env = environ.Env(DEBUG=(bool, False), )
environ.Env.read_env()
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
SECRET_KEY = env('SECRET_KEY')
DEBUG = env('DEBUG')
Run Code Online (Sandbox Code Playgroud)
对此
import os
from dotenv import load_dotenv
load_dotenv()
...
SECRET_KEY = os.getenv('SECRET_KEY')
DEBUG=os.getenv('DEBUG')
...
Run Code Online (Sandbox Code Playgroud)
以类似的方式更改您的数据库设置
DATABASES = {
'default': {
'ENGINE': os.getenv('DB_ENGINE'),
'NAME': os.getenv('DB_NAME'),
'USER': os.getenv('DB_USER'),
# and so on ...
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2777 次 |
| 最近记录: |