graphite - Graphite django-admin.py raise ImproperlyConfigured("SECRET_KEY 设置不能为空或没有名为 'graphite' 的模块
问题描述
我正在尝试在 Ubuntu 16.04 上安装 Graphite。django-admin.py raise ImproperlyConfigured("SECRET_KEY 设置不能为空。
如果我将 export GRAPHITE_ROOT=/opt/graphite 更改为:
export GRAPHITE_ROOT=/opt/graphite/webapp
我不再收到 SECRET_KEY 错误,但我得到:
File "/opt/graphite/lib/python3.5/site-packages/django/conf/__init__.py", line 157, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "/opt/graphite/lib/python3.5/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 986, in _gcd_import
File "<frozen importlib._bootstrap>", line 969, in _find_and_load
File "<frozen importlib._bootstrap>", line 944, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 986, in _gcd_import
File "<frozen importlib._bootstrap>", line 969, in _find_and_load
File "<frozen importlib._bootstrap>", line 956, in _find_and_load_unlocked
ImportError: No module named 'graphite'
我按照这些说明执行了以下步骤:
sudo apt-get install python-dev libcairo2-dev libffi-dev build-essential
wget https://launchpad.net/graphite/0.9/0.9.10/+download/graphite-web-0.9.10.tar.gz
wget https://launchpad.net/graphite/0.9/0.9.10/+download/carbon-0.9.10.tar.gz
wget https://launchpad.net/graphite/0.9/0.9.10/+download/whisper-0.9.10.tar.gz
wget https://launchpad.net/graphite/0.9/0.9.10/+download/check-dependencies.py
tar xvf whisper-0.9.10.tar.gz
tar xvf carbon-0.9.10.tar.gz
tar xvf graphite-web-0.9.10.tar.gz
cd carbon-0.9.10/
sudo python setup.py install
cd whisper-0.9.10/
sudo python setup.py install
cd graphite-web-0.9.10/
sudo python setup.py install
sudo virtualenv /opt/graphite
source /opt/graphite/bin/activate
sudo chown -R ubuntu:ubuntu /opt/graphite
pip install Django
pip install pytz scandir
pip install django-tagging
pip install pycairo
sudo apt install apache2
wget https://github.com/GrahamDumpleton/mod_wsgi/archive/4.6.5.tar.gz
tar xvf 4.6.5.tar.gz
cd mod_wsgi-4.6.5/
sudo ./configure
sudo make install
cd /opt/graphite/conf
cp graphite.wsgi.example graphite.wsgi
cd /opt/graphite/webapp/graphite
cp local_settings.py.example local_settings.py
export $GRAPHITE_ROOT=/opt/graphite
PYTHONPATH=$GRAPHITE_ROOT/webapp /opt/graphite/lib/python3.5/site-packages/django/bin/django-admin.py collectstatic --noinput --settings=graphite.settings
产生此错误:
File "/opt/graphite/lib/python3.5/site-packages/django/bin/django-admin.py", line 5, in <module>
management.execute_from_command_line()
File "/home/ubuntu/.pyenv/versions/3.4.3/lib/python3.4/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line
utility.execute()
File "/home/ubuntu/.pyenv/versions/3.4.3/lib/python3.4/site-packages/django/core/management/__init__.py", line 330, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/ubuntu/.pyenv/versions/3.4.3/lib/python3.4/site-packages/django/core/management/__init__.py", line 182, in fetch_command
settings.INSTALLED_APPS
File "/home/ubuntu/.pyenv/versions/3.4.3/lib/python3.4/site-packages/django/conf/__init__.py", line 48, in __getattr__
self._setup(name)
File "/home/ubuntu/.pyenv/versions/3.4.3/lib/python3.4/site-packages/django/conf/__init__.py", line 44, in _setup
self._wrapped = Settings(settings_module)
File "/home/ubuntu/.pyenv/versions/3.4.3/lib/python3.4/site-packages/django/conf/__init__.py", line 113, in __init__
raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
我相信这样做的原因是 django 被安装在 virtualenv 和 $DJANGO_HOME 中。说明说在使用 virtualenv 时将完整路径放入 django-admin.py,我这样做了。
因此它是从错误的位置读取 global_settings.py 还是在错误的位置寻找 local_settings.py。
./opt/graphite/bin/django-admin.py
./opt/graphite/lib/python3.5/site-packages/django/bin/django-admin.py
这两个都有:
SECRET_KEY = ''
另外,我尝试在两者中都设置一个值,如果您查看引发错误的代码,则不需要该值,它只查找该字段的存在而不是该字段是否为空。
SECRET_KEY = '1232323'
./opt/graphite/lib/python3.5/site-packages/django/conf/global_settings.py
./home/ubuntu/.pyenv/versions/3.4.3/lib/python3.4/site-packages/django/conf/global_settings.py
这是在 /home/ubuntu/.pyenv/versions/3.4.3/lib/python3.4/site-packages/django/conf/init .py 中引发错误的代码:
if not self.SECRET_KEY:
raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
解决方案
0.9.10 是非常旧的版本(2012 年 5 月,超过 7 年前),它不支持 Python 3。如果你想从源代码安装 Graphite,请尝试最新版本(1.1.5)。
但是您也可以从软件包中安装它(虽然版本有点旧,在 Ubuntu 16.04 中是 0.9.15)。您可以使用社区编写的更多特定于发行版的手册。例如https://www.scaleway.com/en/docs/install-and-configure-graphite-on-ubuntu/或https://www.vultr.com/docs/how-to-install-and-configure-石墨-on-ubuntu-16-04
您还可以在 Docker 中尝试 Graphite - 它是运行最新版本的快速便捷方式,且麻烦最少。
推荐阅读
- youtube-data-api - 不带毫秒的发布日期
- postgresql - 如何在 PostgreSQL 中选择变量?
- rnotebook - 如何在 RNotebook 中更改图像高度
- javascript - 仅在 Javascript 中转义“特殊”URI 字符
- reactjs - 如何在反应中从父级调用子组件函数
- swift - 在 Swift 中,您应该使用内置的 get/set 属性还是使用 getter/setter 方法?
- php - 这是我的 laravel 项目中的一个额外的“)”,laravel 为我查询
- javascript - 如何将按键发送到输入字段?
- python - 决策树 AttributeError:模块“sklearn.tree”在 Jupyter Notebook 中没有属性“plot_tree”错误
- python - sklearn IterativeImputer 如何在幕后工作?