【问题标题】:graphite/carbon ImportError: No module named fields石墨/碳导入错误:没有模块命名字段
【发布时间】:2023-11-15 14:56:01
【问题描述】:

我能够遵循几乎所有的指令here

但是当我到达时

[idf@node1 graphite]$ cd /opt/graphite/webapp/graphite/
[idf@node1 graphite]$ sudo python manage.py syncdb
Could not import graphite.local_settings, using defaults!
/opt/graphite/webapp/graphite/settings.py:244: UserWarning: SECRET_KEY is set to an unsafe default. This should be set in local_settings.py for better security
  warn('SECRET_KEY is set to an unsafe default. This should be set in local_settings.py for better security')
ImportError: No module named fields
[idf@node1 graphite]$ 

不知道为什么会出现这个错误?

我也尝试了这些说明,但它几乎在同一个地方挂断了

https://www.digitalocean.com/community/tutorials/how-to-keep-effective-historical-logs-with-graphite-carbon-and-collectd-on-centos-7

[idf@node1 graphite]$ sudo PYTHONPATH=/opt/graphite/webapp/ django-admin.py syncdb --settings=graphite.settings
/var/tmp/sclHwyLM6: line 8: PYTHONPATH=/opt/graphite/webapp/: No such file or directory
[idf@node1 graphite]$ 

如果我回显 PYTHONPATH,我会得到

[idf@node1 ~]$ echo $PYTHONPATH
/usr/lib64/python2.7/site-packages/openmpi
[idf@node1 ~]$ 

于是我创建了

/etc/profile.d/local_python.sh 

内容

PYTHONPATH="/opt/graphite/webapp/":"${PYTHONPATH}"
export PYTHONPATH

我创建了一个新的 shell,现在 echo 看起来是正确的

[idf@node1 graphite]$ echo $PYTHONPATH
/opt/graphite/webapp/:/usr/lib64/python2.7/site-packages/openmpi
[idf@node1 graphite]$ 

现在我跑了

[idf@node1 graphite]$ sudo django-admin.py syncdb --settings=graphite.settings
Traceback (most recent call last):
  File "/home/idf/anaconda/bin/django-admin.py", line 5, in <module>
    management.execute_from_command_line()
  File "/home/idf/anaconda/lib/python2.7/site-packages/django/core/management/__init__.py", line 453, in execute_from_command_line
    utility.execute()
  File "/home/idf/anaconda/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/idf/anaconda/lib/python2.7/site-packages/django/core/management/__init__.py", line 263, in fetch_command
    app_name = get_commands()[subcommand]
  File "/home/idf/anaconda/lib/python2.7/site-packages/django/core/management/__init__.py", line 109, in get_commands
    apps = settings.INSTALLED_APPS
  File "/home/idf/anaconda/lib/python2.7/site-packages/django/conf/__init__.py", line 53, in __getattr__
    self._setup(name)
  File "/home/idf/anaconda/lib/python2.7/site-packages/django/conf/__init__.py", line 48, in _setup
    self._wrapped = Settings(settings_module)
  File "/home/idf/anaconda/lib/python2.7/site-packages/django/conf/__init__.py", line 134, in __init__
    raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
ImportError: Could not import settings 'graphite.settings' (Is it on sys.path?): No module named graphite.settings
[idf@node1 graphite]$ 

ImportError:无法导入设置“graphite.settings”(是否在 sys.path 上?):没有名为 graphite.settings 的模块

[idf@node1 graphite]$ pwd
/opt/graphite/webapp/graphite
[idf@node1 graphite]$ ls
account           composer           local_settings.pyc         node.py             storage.py     version
app_settings.py   dashboard          local_settings.py.example  node.pyc            storage.pyc    views.py
app_settings.pyc  events             logger.py                  readers.py          templates      views.pyc
browser           finders            logger.pyc                 readers.pyc         thirdparty     whitelist
carbonlink.py     __init__.py        manage.py                  remote_storage.py   url_shortener  wsgi.py
carbonlink.pyc    __init__.pyc       manage.pyc                 remote_storage.pyc  urls.py        wsgi.pyc
cli               intervals.py       metrics                    render              urls.pyc
compat.py         intervals.pyc      middleware.py              settings.py         util.py
compat.pyc        local_settings.py  middleware.pyc             settings.pyc        util.pyc
[idf@node1 graphite]$ 

【问题讨论】:

    标签: python centos7 graphite graphite-carbon


    【解决方案1】:

    当使用以下命令降级包 django-tagging (0.3.6) 时问题已解决:

    pip uninstall django-tagging  
    pip install 'django-tagging<0.4'
    

    【讨论】:

    • 您愿意在这里提供更多细节吗?它有效,但我很好奇为什么。
    【解决方案2】:

    我能够通过替换这样的路径来使其工作

    sudo django-admin.py syncdb --settings=graphite.settings
    

    这样的路径

    sudo /home/idf/anaconda/bin/django-admin.py syncdb --pythonpath /opt/graphite/webapp --settings graphite.settings 
    

    【讨论】:

      【解决方案3】:

      @Peigong 正确解决了它。我会为问题添加解释。

      django-tagging 0.4 需要新版本的 Django 1.7 或更高版本以及 Python 2.7 或更高版本。将 django-tagging 降级到 0.3.6 将适用于较旧的 Django,例如 Django 1.5

      pip uninstall django-tagging
      pip install django-tagging===0.3.6
      

      或在 CM 中

      python_pip "django-tagging" do
          version "0.3.6"
      end
      

      在此处查看更改日志和有关 django-tagging 的更多信息: https://pypi.python.org/pypi/django-tagging

      【讨论】:

        最近更新 更多