graphite-project / graphite-web

A highly scalable real-time graphing system
http://graphite.readthedocs.org/
Apache License 2.0
5.87k stars 1.26k forks source link

[Q] Issues with Python 3.10 whitenoise 4 and Graphite Web 1.1.10 #2791

Closed nook24 closed 1 year ago

nook24 commented 1 year ago

I'm running Graphite Web within a Docker Container. For this I have build my own Docker image. All related files can be found here: https://github.com/it-novum/graphing-docker/tree/master/graphite-web

Unfortunately I'm unable to run the latest version Graphite Web 1.1.10. Depending on what I try, i get different error messages, so I'm sorry upfront for the long issue text :)

First things first. Everything is working fine as long as I go with Python 3.8 and Graphite Web 1.1.6. So this works without any issues:


In the next step I tried to install Graphite Web 1.1.10. This fails due to a wrong WhiteNoise configuration:

Your WhiteNoise configuration is incompatible with WhiteNoise v4.0
This can be fixed by following the upgrade instructions at:
http://whitenoise.evans.io/en/stable/changelog.html#v4-0

Due to i did not want to use an old Alpine Linux anyway, i decided to check what happens with the latest version. This is where the fun starts.

If I run the install using Python 3.10 (and ignoring all deprecation warnings pip3 prints) , I get the exact same error as with Python 3.8:

Your WhiteNoise configuration is incompatible with WhiteNoise v4.0
This can be fixed by following the upgrade instructions at:
http://whitenoise.evans.io/en/stable/changelog.html#v4-0

If i add the --use-pep517 option to the pip3 install command to resolve warinigs like this

  DEPRECATION: whitenoise is being installed using the legacy 'setup.py install' method, because the '--no-binary' option was enabled for it and this currently disables local wheel building for projects that don't have a 'pyproject.toml' file. pip 23.1 will enforce this behaviour change. A possible replacement is to enable the '--use-pep517' option. Discussion can be found at https://github.com/pypa/pip/issues/11451

I end up with this error message ModuleNotFoundError: No module named 'graphite.settings' and most of the Graphite related files are missing:

/ # ls -la /opt/graphite/
total 0
drwxr-xr-x    1 root     root            29 Dec  8 14:03 .
drwxr-xr-x    1 root     root            22 Dec  8 14:02 ..
drwxr-xr-x    1 root     root            25 Dec  8 14:03 conf
drwxr-xr-x    3 root     root            21 Dec  8 14:03 lib
drwxr-xr-x    1 root     root            22 Dec  8 14:02 webapp

For comparison the working installation using Graphite 1.1.6 and Python 3.8

/ # ls -la /opt/graphite/
total 4
drwxr-xr-x    1 root     root            20 Dec  8 11:55 .
drwxr-xr-x    1 root     root            22 Dec  8 11:55 ..
drwxr-xr-x    2 root     root          4096 Dec  8 11:55 bin
drwxr-xr-x    1 root     root            21 Dec  8 11:55 conf
drwxr-xr-x    3 root     root            80 Dec  8 11:55 examples
drwxr-xr-x    5 root     root            70 Dec  8 11:55 lib
drwxr-xr-x    7 root     root            69 Dec  8 11:55 storage
drwxr-xr-x    1 root     root            22 Dec  8 11:55 webapp
deniszh commented 1 year ago

If I run the install using Python 3.10 (and ignoring all deprecation warnings pip3 prints) , I get the exact same error as with Python 3.8:

That's strange. Whitenoise 4 was introduced in #2333 and I don't see how it can fall back to old behavior. Do you have changes from #2333 incorporated in your wsgi.py and app_settings.py ?

If i add the --use-pep517 option to the pip3 install command to resolve warinigs like this ... I end up with this error message ModuleNotFoundError: No module named 'graphite.settings' and most of the Graphite related files are missing

They are not missing but installed in different path. Prefix doesn't work well with new pip and virtualenv, not sure how to fix that yet. But that's different story from whitenoise issue, though

nook24 commented 1 year ago

That's strange. Whitenoise 4 was introduced in https://github.com/graphite-project/graphite-web/pull/2333 and I don't see how it can fall back to old behavior. Do you have changes from https://github.com/graphite-project/graphite-web/pull/2333 incorporated in your wsgi.py and app_settings.py ?

Thanks for pointing me into the right direction. I have patched my custom wsgi.py and now it is working like expacted with Graphite Web: 1.1.10, whitenoise 4.1.4 and Python 3.10.8 https://github.com/it-novum/graphing-docker/blob/769f5d523203a238073bbe65a5c90f5d5f58f53d/graphite-web/wsgi.py

They are not missing but installed in different path. Prefix doesn't work well with new pip and virtualenv, not sure how to fix that yet. But that's different story from whitenoise issue, though

Ah ok I see. So this is probably something that needs to be addressed by you / the Graphite developers itself? I saw this open PR https://github.com/graphite-project/graphite-web/pull/2409 which has the goal to remove the /opt/graphite prefix at all. But i think this should be part of a separate issue.

From my side, we could close this one down. Many thanks again for your fast help :)

stale[bot] commented 1 year ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.