Skip to content

Plugin manager: pip VCS URL schemes do not work #5382

@rfinnie

Description

@rfinnie

The problem

When trying to install a pip URL from the "... from URL" field (which does say "Expected http, https or any of the supported VCS URLs."), say git+https://github.com/rfinnie/OctoPrint-BedCooldown.git@main, it fails with:

Installing plugin from git+https://github.com/rfinnie/OctoPrint-BedCooldown.git@main...
Error!
Unexpected error while trying to install plugin from None

Log produces:

2026-04-30 16:27:47,131 - octoprint.plugins.pluginmanager - ERROR - Unexpected error while trying to install plugin from None
Traceback (most recent call last):
  File "/home/ryan/venv3/lib/python3.13/site-packages/octoprint/plugins/pluginmanager/__init__.py", line 973, in command_install
    path = download_file(url, folder.name)
  File "/home/ryan/venv3/lib/python3.13/site-packages/octoprint/util/net.py", line 300, in download_file
    with requests.get(url, stream=True, timeout=(connect_timeout, read_timeout)) as r:
         ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ryan/venv3/lib/python3.13/site-packages/requests/api.py", line 73, in get
    return request("get", url, params=params, **kwargs)
  File "/home/ryan/venv3/lib/python3.13/site-packages/requests/api.py", line 59, in request
    return session.request(method=method, url=url, **kwargs)
           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ryan/venv3/lib/python3.13/site-packages/requests/sessions.py", line 592, in request
    resp = self.send(prep, **send_kwargs)
  File "/home/ryan/venv3/lib/python3.13/site-packages/requests/sessions.py", line 700, in send
    adapter = self.get_adapter(url=request.url)
  File "/home/ryan/venv3/lib/python3.13/site-packages/requests/sessions.py", line 795, in get_adapter
    raise InvalidSchema(f"No connection adapters were found for {url!r}")
requests.exceptions.InvalidSchema: No connection adapters were found for 'git+https://github.com/rfinnie/OctoPrint-BedCooldown.git@main'

It seems the plugin manager always tries to interpret the field as a ZIP to download and pass to pip. src/octoprint/plugins/pluginmanager/__init__.py does contain URL_SCHEMES, but it's not currently being used anywhere.

Did the issue persist even in safe mode?

Yes, it did persist

If you could not test in safe mode, please state why ("currently printing" is NOT an excuse!)

No response

Version of OctoPrint

1.11.7

Operating system running OctoPrint

Linux, Raspberry Pi OS trixie

Browser and version of browser, operating system running browser

Firefox 150

Printer model & used firmware incl. version

Ender 3 V2

Systeminfo Bundle

octoprint-systeminfo-20260430162833.zip1

Checklist of files to include below

  • Contents of the JavaScript browser console (always include in cases of issues with the user interface)
  • Screenshots and/or videos showing the problem (always include in case of issues with the user interface)
  • GCODE file with which to reproduce (always include in case of issues with GCODE analysis or printing behaviour)

Additional information & file uploads

Image

Context of how this was discovered: tl;dr I'm looking into ways to migrate from GitHub to Codeberg. They're currently blocking archive zip downloads via the pip User-Agent, so I was looking into alternative methods which will work.

OctoPrint/plugins.octoprint.org#1430
https://codeberg.org/Codeberg/Community/issues/2563

Footnotes

  1. octoprint-systeminfo-20260430162833.zip (bundleviewer) (download)
    OctoPrint: 1.11.7
    Python: 3.13.5
    OS: Linux-6.12.75+rpt-rpi-v8-aarch64-with-glibc2.41
    RPi: Raspberry Pi 3 Model B Plus Rev 1.3
    Browser: Mozilla/5.0 (X11; Linux x86_64; rv:150.0) Gecko/20100101 Firefox/150.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugIssue describes a bugdoneDone but not yet released

    Type

    No type

    Projects

    Status

    Todo

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions