Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[PLUGIN] Python 3 for UNRAID (6.11+)

Featured Replies

Hi @Rysz ,

I'm running unraid 7.1.4 with the latest python 3 plugin (2025.08.21). I recently enabled SSL in unraid (Settings --> Management Access --> Use SSL/TLS set to Strict) and now I can't use pip. I'm getting the following error message when running pip list

pip list
Package        Version
-------------- -------
configshell-fb 1.1.29
gobject        0.1.0
pip            20.2.3
pycairo        1.21.0
PyGObject      3.42.2
pyparsing      2.4.7
pyudev         0.24.0
rtslib-fb      2.1.75
setuptools     49.2.1
six            1.16.0
targetcli-fb   2.1.54
urwid          2.1.2
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping

Then when running pip search <anything> I get this error

pip search setuptools
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /pypi
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /pypi
WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /pypi
WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /pypi
WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /pypi
ERROR: Exception:
Traceback (most recent call last):
  File "/usr/lib/python3.9/site-packages/pip/_vendor/urllib3/connectionpool.py", line 659, in urlopen
    conn = self._get_conn(timeout=pool_timeout)
  File "/usr/lib/python3.9/site-packages/pip/_vendor/urllib3/connectionpool.py", line 279, in _get_conn
    return conn or self._new_conn()
  File "/usr/lib/python3.9/site-packages/pip/_vendor/urllib3/connectionpool.py", line 945, in _new_conn
    raise SSLError(
pip._vendor.urllib3.exceptions.SSLError: Can't connect to HTTPS URL because the SSL module is not available.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.9/site-packages/pip/_vendor/requests/adapters.py", line 439, in send
    resp = conn.urlopen(
  File "/usr/lib/python3.9/site-packages/pip/_vendor/urllib3/connectionpool.py", line 752, in urlopen
    return self.urlopen(
  File "/usr/lib/python3.9/site-packages/pip/_vendor/urllib3/connectionpool.py", line 752, in urlopen
    return self.urlopen(
  File "/usr/lib/python3.9/site-packages/pip/_vendor/urllib3/connectionpool.py", line 752, in urlopen
    return self.urlopen(
  [Previous line repeated 2 more times]
  File "/usr/lib/python3.9/site-packages/pip/_vendor/urllib3/connectionpool.py", line 724, in urlopen
    retries = retries.increment(
  File "/usr/lib/python3.9/site-packages/pip/_vendor/urllib3/util/retry.py", line 439, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
pip._vendor.urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /pypi (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available."))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.9/site-packages/pip/_internal/cli/base_command.py", line 228, in _main
    status = self.run(options, args)
  File "/usr/lib/python3.9/site-packages/pip/_internal/commands/search.py", line 60, in run
    pypi_hits = self.search(query, options)
  File "/usr/lib/python3.9/site-packages/pip/_internal/commands/search.py", line 80, in search
    hits = pypi.search({'name': query, 'summary': query}, 'or')
  File "/usr/lib/python3.9/xmlrpc/client.py", line 1116, in __call__
    return self.__send(self.__name, args)
  File "/usr/lib/python3.9/xmlrpc/client.py", line 1456, in __request
    response = self.__transport.request(
  File "/usr/lib/python3.9/site-packages/pip/_internal/network/xmlrpc.py", line 41, in request
    response = self._session.post(url, data=request_body,
  File "/usr/lib/python3.9/site-packages/pip/_vendor/requests/sessions.py", line 578, in post
    return self.request('POST', url, data=data, json=json, **kwargs)
  File "/usr/lib/python3.9/site-packages/pip/_internal/network/session.py", line 421, in request
    return super(PipSession, self).request(method, url, *args, **kwargs)
  File "/usr/lib/python3.9/site-packages/pip/_vendor/requests/sessions.py", line 530, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python3.9/site-packages/pip/_vendor/requests/sessions.py", line 643, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python3.9/site-packages/pip/_vendor/cachecontrol/adapter.py", line 53, in send
    resp = super(CacheControlAdapter, self).send(request, **kw)
  File "/usr/lib/python3.9/site-packages/pip/_vendor/requests/adapters.py", line 514, in send
    raise SSLError(e, request=request)
pip._vendor.requests.exceptions.SSLError: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /pypi (Caused b
y SSLError("Can't connect to HTTPS URL because the SSL module is not available."))

Any help would be greatly appreciated

Edited by msalad

  • Replies 91
  • Views 21.8k
  • Created
  • Last Reply

Top Posters In This Topic

Most Popular Posts

  • Messages like this are a prime example for the reasons I provide this plugin. The package you linked is not compatible with Unraid 7, it's a Slackware 15.0 package. Please do not hijack my p

  • Unraid 7 is running Slackware 15.0+, that's future 15.1, from the -current branch. Python 3 works just fine on Unraid 7, if compiled against the respective OS libraries. The packages you lin

  • Even if Python 3.12. were also considered stable or stable enough, it's still in active development (bugfix cycle). Slackware-current uses 3.11.10, as outlined in the initial post this plugin is

Posted Images

2 hours ago, msalad said:

Any help would be greatly appreciated

Its your own fault.

Read what "strict" means:

"Select Strict to enable exclusive use of a myunraid.net SSL certificate for https access (see Provision below). Note that a DNS server must be reachable."

This means, all other certs are considered to be invalid. A very paranoid setting. Only connections to unraid.net are allowed anymore.

Switch to "yes" then python will love you again.

11 hours ago, MAM59 said:

Switch to "yes" then python will love you again.

I did this and the issue still persists.

1 minute ago, msalad said:

I did this and the issue still persists.

did you reboot afterwards?

  • Author
14 hours ago, msalad said:

Hi @Rysz ,

I'm running unraid 7.1.4 with the latest python 3 plugin (2025.08.21). I recently enabled SSL in unraid (Settings --> Management Access --> Use SSL/TLS set to Strict) and now I can't use pip. I'm getting the following error message when running pip list

pip list
Package        Version
-------------- -------
configshell-fb 1.1.29
gobject        0.1.0
pip            20.2.3
pycairo        1.21.0
PyGObject      3.42.2
pyparsing      2.4.7
pyudev         0.24.0
rtslib-fb      2.1.75
setuptools     49.2.1
six            1.16.0
targetcli-fb   2.1.54
urwid          2.1.2
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping

Then when running pip search <anything> I get this error

pip search setuptools
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /pypi
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /pypi
WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /pypi
WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /pypi
WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /pypi
ERROR: Exception:
Traceback (most recent call last):
  File "/usr/lib/python3.9/site-packages/pip/_vendor/urllib3/connectionpool.py", line 659, in urlopen
    conn = self._get_conn(timeout=pool_timeout)
  File "/usr/lib/python3.9/site-packages/pip/_vendor/urllib3/connectionpool.py", line 279, in _get_conn
    return conn or self._new_conn()
  File "/usr/lib/python3.9/site-packages/pip/_vendor/urllib3/connectionpool.py", line 945, in _new_conn
    raise SSLError(
pip._vendor.urllib3.exceptions.SSLError: Can't connect to HTTPS URL because the SSL module is not available.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.9/site-packages/pip/_vendor/requests/adapters.py", line 439, in send
    resp = conn.urlopen(
  File "/usr/lib/python3.9/site-packages/pip/_vendor/urllib3/connectionpool.py", line 752, in urlopen
    return self.urlopen(
  File "/usr/lib/python3.9/site-packages/pip/_vendor/urllib3/connectionpool.py", line 752, in urlopen
    return self.urlopen(
  File "/usr/lib/python3.9/site-packages/pip/_vendor/urllib3/connectionpool.py", line 752, in urlopen
    return self.urlopen(
  [Previous line repeated 2 more times]
  File "/usr/lib/python3.9/site-packages/pip/_vendor/urllib3/connectionpool.py", line 724, in urlopen
    retries = retries.increment(
  File "/usr/lib/python3.9/site-packages/pip/_vendor/urllib3/util/retry.py", line 439, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
pip._vendor.urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /pypi (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available."))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.9/site-packages/pip/_internal/cli/base_command.py", line 228, in _main
    status = self.run(options, args)
  File "/usr/lib/python3.9/site-packages/pip/_internal/commands/search.py", line 60, in run
    pypi_hits = self.search(query, options)
  File "/usr/lib/python3.9/site-packages/pip/_internal/commands/search.py", line 80, in search
    hits = pypi.search({'name': query, 'summary': query}, 'or')
  File "/usr/lib/python3.9/xmlrpc/client.py", line 1116, in __call__
    return self.__send(self.__name, args)
  File "/usr/lib/python3.9/xmlrpc/client.py", line 1456, in __request
    response = self.__transport.request(
  File "/usr/lib/python3.9/site-packages/pip/_internal/network/xmlrpc.py", line 41, in request
    response = self._session.post(url, data=request_body,
  File "/usr/lib/python3.9/site-packages/pip/_vendor/requests/sessions.py", line 578, in post
    return self.request('POST', url, data=data, json=json, **kwargs)
  File "/usr/lib/python3.9/site-packages/pip/_internal/network/session.py", line 421, in request
    return super(PipSession, self).request(method, url, *args, **kwargs)
  File "/usr/lib/python3.9/site-packages/pip/_vendor/requests/sessions.py", line 530, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python3.9/site-packages/pip/_vendor/requests/sessions.py", line 643, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python3.9/site-packages/pip/_vendor/cachecontrol/adapter.py", line 53, in send
    resp = super(CacheControlAdapter, self).send(request, **kw)
  File "/usr/lib/python3.9/site-packages/pip/_vendor/requests/adapters.py", line 514, in send
    raise SSLError(e, request=request)
pip._vendor.requests.exceptions.SSLError: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /pypi (Caused b
y SSLError("Can't connect to HTTPS URL because the SSL module is not available."))

Any help would be greatly appreciated

/usr/lib/python3.9/site-packages

Another Python installation is somewhere on your system - my plugin does not ship Python 3.9.

Please check /boot/extra (= extra folder on your USB stick) if there is such a package, remove it & reboot.

Attach diagnostics to your next reply to this topic, so I can take a look at what might be causing this as well.

5 hours ago, MAM59 said:

did you reboot afterwards?

yes, did not fix the issue.

4 hours ago, Rysz said:

/usr/lib/python3.9/site-packages

Another Python installation is somewhere on your system - my plugin does not ship Python 3.9.

Please check /boot/extra (= extra folder on your USB stick) if there is such a package, remove it & reboot.

Attach diagnostics to your next reply to this topic, so I can take a look at what might be causing this as well.

I think what @bmartino1 said might be going on - another plugin I'm using could have shipped with python 3.9. I am using the disk location plugin, like they mention. The only files in my /boot/extra folder are fdupes, ipmitool, and jdupes, which I've installed with ich777's un-get app (link). This has allowed me to get these apps for unraid 7.x.

That said, if I type python --version, it shows I'm using 3.13.5, which is what I'm expecting (screenshot of my python3 plugin settings page). But if I type python3 --version, it shows version 3.9.2.

I've attached my diagnostics file. Thanks for taking a look

1 hour ago, bmartino1 said:

what other plugin are you running. I don't remember which ones, but there are some older plugins that shipped with there own 3.9 Python packages to run that plugin.

disk location was one at one time per example.

I think this could be what is going on re: me having python 3.9. I'm using the disk location plugin.

msaladunraid-diagnostics-20250929-1704.zip

  • Author
7 hours ago, msalad said:

yes, did not fix the issue.

I think what @bmartino1 said might be going on - another plugin I'm using could have shipped with python 3.9. I am using the disk location plugin, like they mention. The only files in my /boot/extra folder are fdupes, ipmitool, and jdupes, which I've installed with ich777's un-get app (link). This has allowed me to get these apps for unraid 7.x.

That said, if I type python --version, it shows I'm using 3.13.5, which is what I'm expecting (screenshot of my python3 plugin settings page). But if I type python3 --version, it shows version 3.9.2.

I've attached my diagnostics file. Thanks for taking a look

I think this could be what is going on re: me having python 3.9. I'm using the disk location plugin.

msaladunraid-diagnostics-20250929-1704.zip

Thank you, it's the iSCSI plugin that installs a conflicting Python version. (not Disk Location)

You'll have to use either that plugin's Python or uninstall it and be able to use my plugin's Python.

20 hours ago, Rysz said:

Thank you, it's the iSCSI plugin that installs a conflicting Python version. (not Disk Location)

You'll have to use either that plugin's Python or uninstall it and be able to use my plugin's Python.

Ok, thanks for taking a look at my diagnostics. bmartino1 posted information about how to use call python 3.13 when I wanted to use that version, while still keeping 3.9 (and the iSCSI plugin) install but I think they deleted that post =/.

I need to keep the iSCSI plugin so I guess I can use just python3.13when I want to use python 3.13 instead of python 3.9.

Edited by msalad

49 minutes ago, msalad said:

Ok, thanks for taking a look at my diagnostics. bmartino1 posted information about how to use call python 3.13 when I wanted to use that version, while still keeping 3.9 (and the iSCSI plugin) install but I think they deleted that post =/.

I need to keep the iSCSI plugin so I guess I can use just python3.13when I want to use python 3.13 instead of python 3.9.

For continued back and forth please make a general post. Replied to the PM. it was most likely removed by a mod.

I highly recommend making and using a python venv. info can be found earlier in this post.

Hi @Rysz ,

I saw you just pushed an update to disallow install of your python3 plugin if the iSCSI plugin is installed. Is this necessary? For my use case, I want to use the latest python for other things but I also need iSCSI. Wouldn't a warning during install be better to allow use cases such as mine?

  • Author
1 hour ago, msalad said:

Hi @Rysz ,

I saw you just pushed an update to disallow install of your python3 plugin if the iSCSI plugin is installed. Is this necessary? For my use case, I want to use the latest python for other things but I also need iSCSI. Wouldn't a warning during install be better to allow use cases such as mine?

No, every time it takes me +/- 15 minutes of looking through other people's GitHub repositories to identify where such package collisions are coming from. In this case it's even worse as this isn't even installed as a normal package, but actually bundled into another package, despite half that Python installation being unusable due to missing SSL libraries on newer OS versions. Two colliding Python installations will cause the problems and respective support volume we've seen in your case, so that's not something I can sustainably support in the long term.

You can pull the packages themselves and put them into /boot/extra, if that's something you really want:
https://raw.githubusercontent.com/desertwitch/python-unRAID/main/plugin/dwpython.plg

  • 2 months later...

Hi there.

I'm a complete noob to this and I don't under Python at all, and hardly much of how linux works either. This is why this description has me confused a bit:

# Put here all commands that you wish to to execute after a system reboot.

# They are executed NON-BLOCKING (but sequentially), ensuring the boot sequence proceeds regardless of any script error.

#

# The purpose of this script, for example, is to establish that certain global packages are always installed with pip.

# Please keep in mind that using virtual environments is always preferable over globally installing any Python packages.

#

# All output is directed to the SYSLOG. To prevent this, append &>/dev/null (without quotes) to the end of any command.

# Alternatively, just put exec &>/dev/null on the first non-comment line of this script to disable ALL commands outputs.

How exactly do I launch my python script from this? Is it just /path/to/filename.py or do I need to add something more here?

Edited by d0mmie

  • Author
On 12/16/2025 at 11:01 AM, d0mmie said:

Hi there.

I'm a complete noob to this and I don't under Python at all, and hardly much of how linux works either. This is why this description has me confused a bit:

# Put here all commands that you wish to to execute after a system reboot.

# They are executed NON-BLOCKING (but sequentially), ensuring the boot sequence proceeds regardless of any script error.

#

# The purpose of this script, for example, is to establish that certain global packages are always installed with pip.

# Please keep in mind that using virtual environments is always preferable over globally installing any Python packages.

#

# All output is directed to the SYSLOG. To prevent this, append &>/dev/null (without quotes) to the end of any command.

# Alternatively, just put exec &>/dev/null on the first non-comment line of this script to disable ALL commands outputs.

How exactly do I launch my python script from this? Is it just /path/to/filename.py or do I need to add something more here?

Usually you'd just open a command line and run python3 my_script.py

The autostart script is just for stuff that needs to be installed on system boot, most users won't need this.

  • 1 month later...

Any chance of updating this to 3.14.x? zstd support with 3.14 is super useful.

  • 2 months later...
  • 5 weeks later...

Very much a noob question.

I installed Python 3 (Python 3 for UNRAID) thinking it was a docker container. Just needed to run a tinytuya script and I don't have another system to run it on.

Question is, I don't need this since it's not a container. I "uninstalled" it but it said it didn't find 'xxxx' so I'm not sure It was uninstalled properly.

Can you please let me know how to ensure it is no longer installed?

Thanks!

  • Author
4 minutes ago, frank_sp61 said:

Very much a noob question.

I installed Python 3 (Python 3 for UNRAID) thinking it was a docker container. Just needed to run a tinytuya script and I don't have another system to run it on.

Question is, I don't need this since it's not a container. I "uninstalled" it but it said it didn't find 'xxxx' so I'm not sure It was uninstalled properly.

Can you please let me know how to ensure it is no longer installed?

Thanks!

It's normal it says some packages were not found during the uninstall process. If you're unsure you can reboot the server to ensure any leftover files are gone (but there shouldn't be any).

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.