New OctoPi Install - Cannot Install Plugins

Hey all! I ran across this twice in the last few days because I needed to rebuild my OctoPi installation with new SD Card and I wanted to report it.

After installing either distribution from the Raspberry Pi Imager and then uploading my backup, I am unable to install any plugins.

I SSHed to the box and ran sudo apt update and sudo apt upgrade, but those did not fix the issue.

So I searched around and I'm surprised it took a while to find something that worked.

I had to do the following to address what I was seeing in the logs:

sudo service octoprint stop
source ~/oprint/bin/activate
pip install --upgrade pip setuptools wheel
pip install pybind11
deactivate
sudo service octoprint start

Afterwards, I was able to install plugins.

I'm not sure if it was just my backup causing the issues (though I had to do this again when I swapped to the new camera stack image with a backup I previously got working). If the image is shipping with this issue, I wanted to make sure I put it somewhere.

would be helpful to get a copy of your log so we can see the exact error. there's a chance that one of your plugins uses a pinned version of one of those dependencies and caused what was already installed in OctoPrint's venv to be overwritten.

Sure. I only have one example, as when I tried it on this second install, I went ahead and fixed it.

2026-01-08 17:02:31,743   /opt/octopi/oprint/bin/python -m pip --disable-pip-version-check install file:///tmp/tmpy0nroq39/OctoPrint-OctoEverywhere-master.zip --no-cache-dir --use-pep517 --no-build-isolation
2026-01-08 17:02:33,753 > Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
2026-01-08 17:02:33,755 > Processing /tmp/tmpy0nroq39/OctoPrint-OctoEverywhere-master.zip
2026-01-08 17:02:33,755 > Preparing metadata (pyproject.toml): started
2026-01-08 17:02:34,860 > Preparing metadata (pyproject.toml): finished with status 'done'
2026-01-08 17:02:34,860 > Requirement already satisfied: OctoPrint in /opt/octopi/oprint/lib/python3.11/site-packages (from OctoEverywhere==4.4.0) (1.11.5)
2026-01-08 17:02:34,860 > Requirement already satisfied: certifi>=2025.1.31 in /opt/octopi/oprint/lib/python3.11/site-packages (from OctoEverywhere==4.4.0) (2025.1.31)
2026-01-08 17:02:36,863 > Collecting dnspython>=2.3.0 (from OctoEverywhere==4.4.0)
2026-01-08 17:02:36,863 > Downloading https://www.piwheels.org/simple/dnspython/dnspython-2.8.0-py3-none-any.whl (331 kB)
2026-01-08 17:02:39,269 > Collecting httpx>=0.24.1 (from OctoEverywhere==4.4.0)
2026-01-08 17:02:39,271 > Downloading https://www.piwheels.org/simple/httpx/httpx-0.28.1-py3-none-any.whl (73 kB)
2026-01-08 17:02:39,271 > Collecting octoflatbuffers==24.3.27 (from OctoEverywhere==4.4.0)
2026-01-08 17:02:39,272 > Downloading https://www.piwheels.org/simple/octoflatbuffers/octoflatbuffers-24.3.27-py2.py3-none-any.whl (27 kB)
2026-01-08 17:02:39,276 > Collecting octowebsocket-client==1.8.3 (from OctoEverywhere==4.4.0)
2026-01-08 17:02:39,276 > Downloading https://www.piwheels.org/simple/octowebsocket-client/octowebsocket_client-1.8.3-py3-none-any.whl (60 kB)
2026-01-08 17:02:41,698 > Collecting pillow (from OctoEverywhere==4.4.0)
2026-01-08 17:02:41,699 > Downloading pillow-12.1.0.tar.gz (47.0 MB)
2026-01-08 17:03:08,716 > ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 47.0/47.0 MB 1.8 MB/s eta 0:00:00
2026-01-08 17:03:13,119 > Preparing metadata (pyproject.toml): started
2026-01-08 17:03:13,119 > Preparing metadata (pyproject.toml): finished with status 'error'
2026-01-08 17:03:13,621 ! error: subprocess-exited-with-error
2026-01-08 17:03:13,621 ! 
2026-01-08 17:03:13,622 ! Γ— Preparing metadata (pyproject.toml) did not run successfully.
2026-01-08 17:03:13,622 ! β”‚ exit code: 1
2026-01-08 17:03:13,622 ! ╰─> [15 lines of output]
2026-01-08 17:03:13,622 ! Traceback (most recent call last):
2026-01-08 17:03:13,622 ! File "/opt/octopi/oprint/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 389, in <module>
2026-01-08 17:03:13,623 ! main()
2026-01-08 17:03:13,623 ! File "/opt/octopi/oprint/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 373, in main
2026-01-08 17:03:13,623 ! json_out["return_val"] = hook(**hook_input["kwargs"])
2026-01-08 17:03:13,623 ! ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2026-01-08 17:03:13,623 ! File "/opt/octopi/oprint/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 175, in prepare_metadata_for_build_wheel
2026-01-08 17:03:13,623 ! return hook(metadata_directory, config_settings)
2026-01-08 17:03:13,623 ! ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2026-01-08 17:03:13,623 ! File "/opt/octopi/oprint/lib/python3.11/site-packages/setuptools/build_meta.py", line 377, in prepare_metadata_for_build_wheel
2026-01-08 17:03:13,623 ! self.run_setup()
2026-01-08 17:03:13,623 ! File "/opt/octopi/oprint/lib/python3.11/site-packages/setuptools/build_meta.py", line 335, in run_setup
2026-01-08 17:03:13,624 ! exec(code, locals())
2026-01-08 17:03:13,624 ! File "<string>", line 20, in <module>
2026-01-08 17:03:13,624 ! ModuleNotFoundError: No module named 'pybind11'
2026-01-08 17:03:13,624 ! [end of output]
2026-01-08 17:03:13,624 ! 
2026-01-08 17:03:13,624 ! note: This error originates from a subprocess, and is likely not a problem with pip.
2026-01-08 17:03:13,624 ! error: metadata-generation-failed
2026-01-08 17:03:13,624 ! 
2026-01-08 17:03:13,624 ! Γ— Encountered error while generating package metadata.
2026-01-08 17:03:13,624 ! ╰─> See above for output.
2026-01-08 17:03:13,624 ! 
2026-01-08 17:03:13,624 ! note: This is an issue with the package mentioned above, not pip.
2026-01-08 17:03:13,625 ! hint: See above for details.
2026-01-08 17:03:13,627 * Looks like the plugin was already installed. Forcing a reinstall.
2026-01-08 17:03:13,630   /opt/octopi/oprint/bin/python -m pip --disable-pip-version-check install file:///tmp/tmpy0nroq39/OctoPrint-OctoEverywhere-master.zip --no-cache-dir --use-pep517 --no-build-isolation --ignore-installed --force-reinstall --no-deps
2026-01-08 17:03:15,643 > Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
2026-01-08 17:03:15,643 > Processing /tmp/tmpy0nroq39/OctoPrint-OctoEverywhere-master.zip
2026-01-08 17:03:15,643 > Preparing metadata (pyproject.toml): started
2026-01-08 17:03:16,676 > Preparing metadata (pyproject.toml): finished with status 'done'
2026-01-08 17:03:16,676 > Building wheels for collected packages: OctoEverywhere
2026-01-08 17:03:16,677 > Building wheel for OctoEverywhere (pyproject.toml): started
2026-01-08 17:03:18,603 > Building wheel for OctoEverywhere (pyproject.toml): finished with status 'done'
2026-01-08 17:03:18,604 > Created wheel for OctoEverywhere: filename=OctoEverywhere-4.4.0-py3-none-any.whl size=324236 sha256=89efc20c64bb9778484f841ea9d18ca6e1ace8bf71b37822161dc322f118310f
2026-01-08 17:03:18,604 > Stored in directory: /tmp/pip-ephem-wheel-cache-vcc0wjrf/wheels/a9/24/31/425594f1097d5a2c15412072a363b6dafd1c0812edbe0ef0e4
2026-01-08 17:03:18,604 > Successfully built OctoEverywhere
2026-01-08 17:03:18,604 > Installing collected packages: OctoEverywhere
2026-01-08 17:03:18,605 > Successfully installed OctoEverywhere-4.4.0

It fails with the "ModuleNotFoundError: No module named 'pybind11' " error. When you install pybind11 via SSH, it will then fail with wheel being woefully out of date. I don't have a log entry for this, as I fixed it all at once this last time.

Also note, the last line says it installed the successfully, but in the UI, the pop-up says "Installed Unknown successfully. Please restart." Probably not relevant, but that's what it does.

Yep, so your issue is with the pillow module and octoeverywhere, not core OctoPrint.

I would agree, but it did this for every plugin I tried to install. I can say that wheel, setuptools, and pip in the OctoPrint venv are fairly out of date and pybind11 isn't installed.

OctoEverywhere, Octoapp, DiscordRemote are the three plugins I tried before fixing the issue. They all involve internet communication, so it makes sense that they are all related. However, none of their installation guides mention having to install dependencies via SSH before installing the plugins.

If the plugins need to install those dependencies, then I should let the plugin creators know on GitHub? The plugins came right out of the Plugin Manager, I wasn't using direct URLs to install. To me, as a moderate Linux user, a plugin is in a "store" page, it should work when you click install.

Please attach the systeminfo bundle to your next post.