Earlier versions of the third party plugin PrintTimeGenius pulled in an unneeded third party logging
module that is incompatible to Python's standard library. Its presence causes this issue. PrintTimeGenius has since been updated to no longer pull in this disrupting dependency, but if you installed an older version of it at some earlier point it will still have pulled it in and cause errors like the following when attempting to update:
Complete output from command /home/pi/oprint/bin/python2 /home/pi/oprint/local/lib/python2.7/site-packages/pip install --ignore-installed --no-user --prefix /tmp/pip-build-env-pwPZqO/overlay --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple --extra-index-url https://www.piwheels.org/simple -- setuptools wheel Cython:
Traceback (most recent call last):
File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/home/pi/oprint/lib/python2.7/site-packages/pip/__main__.py", line 16, in <module>
from pip._internal import main as _main # isort:skip # noqa
File "/home/pi/oprint/lib/python2.7/site-packages/pip/_internal/__init__.py", line 19, in <module>
from pip._vendor.urllib3.exceptions import DependencyWarning
File "/home/pi/oprint/lib/python2.7/site-packages/pip/_vendor/urllib3/__init__.py", line 26, in <module>
from logging import NullHandler
ImportError: cannot import name NullHandler
The offending module has to be removed to fix things. You can use this single file plugin for this:
https://get.octoprint.org/plugins/cleanup_logging.py
Just enter Plugin Manager, click on Get More and enter the above into the URL field, then click "Install":
Note that the plugin will only work on Python 2 because the logging
module in question here will also only work on Python 2. Python 3 instances should not run into this problem at all.
The plugin will not give you any visual feedback but only produce output in octoprint.log
like this:
2021-10-12 15:15:37,263 - octoprint.plugins.cleanup_logging - INFO - Found PrintTimeGenius' logging left over, removing...
[...]
2021-10-12 15:15:40,634 - octoprint.plugins.cleanup_logging - INFO - pip uninstall logging returned status code 0
2021-10-12 15:15:40,635 - octoprint.plugins.cleanup_logging - INFO - STDOUT:
Uninstalling logging-0.4.9.6:
Successfully uninstalled logging-0.4.9.6
2021-10-12 15:15:40,636 - octoprint.plugins.cleanup_logging - WARNING - STDERR:
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
2021-10-12 15:15:40,636 - octoprint.plugins.cleanup_logging - INFO - logging successfully removed
Once it has run its course, restart the server. You can uninstall the plugin again.
If you have run into this error, you still have not upgraded to Python 3
This error only occurs on legacy Python 2 installs. You can find out how to upgrade here.
Alternatively, you can also uninstall the offending module through the command line via pip uninstall logging
.
For OctoPi:
- SSH into your Pi (username: pi, default password: raspberry)
- Execute
~/oprint/bin/pip uninstall logging
The update should then run through.