I've been having an issue with installing packages in Python. It only started a few days ago - programs will run fine, but whenever I try running pip install Pillow or pip install pygame (been testing out various libraries for graphics) I always run into the same error.
Collecting pygame
Using cached pygame-2.1.2.tar.gz (10.1 MB)
Preparing metadata (setup.py) ... error
error: subprocess-exited-with-error
× python setup.py egg_info did not run successfully.
│ exit code: 1
╰─> [70 lines of output]
WARNING, No "Setup" File Exists, Running "buildconfig/config.py"
Using WINDOWS configuration...
Traceback (most recent call last):
File "C:\msys64\mingw64\lib\python3.9\urllib\request.py", line 1346, in do_open
h.request(req.get_method(), req.selector, req.data, headers,
File "C:\msys64\mingw64\lib\python3.9\http\client.py", line 1285, in request
self._send_request(method, url, body, headers, encode_chunked)
File "C:\msys64\mingw64\lib\python3.9\http\client.py", line 1331, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "C:\msys64\mingw64\lib\python3.9\http\client.py", line 1280, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "C:\msys64\mingw64\lib\python3.9\http\client.py", line 1040, in _send_output
self.send(msg)
File "C:\msys64\mingw64\lib\python3.9\http\client.py", line 980, in send
self.connect()
File "C:\msys64\mingw64\lib\python3.9\http\client.py", line 1454, in connect
self.sock = self._context.wrap_socket(self.sock,
File "C:\msys64\mingw64\lib\python3.9\ssl.py", line 500, in wrap_socket
return self.sslsocket_class._create(
File "C:\msys64\mingw64\lib\python3.9\ssl.py", line 1040, in _create
self.do_handshake()
File "C:\msys64\mingw64\lib\python3.9\ssl.py", line 1309, in do_handshake
self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<string>", line 2, in <module>
File "<pip-setuptools-caller>", line 34, in <module>
File "C:\Users\ronit\AppData\Local\Temp\pip-install-j1yeb0r5\pygame_2f7b886e356f433a8184f298ab684d13\setup.py", line 359, in <module>
buildconfig.config.main(AUTO_CONFIG)
File "C:\Users\ronit\AppData\Local\Temp\pip-install-j1yeb0r5\pygame_2f7b886e356f433a8184f298ab684d13\buildconfig\config.py", line 225, in main
deps = CFG.main(**kwds)
File "C:\Users\ronit\AppData\Local\Temp\pip-install-j1yeb0r5\pygame_2f7b886e356f433a8184f298ab684d13\buildconfig\config_win.py", line 497, in main
and download_win_prebuilt.ask(**download_kwargs):
File "C:\Users\ronit\AppData\Local\Temp\pip-install-j1yeb0r5\pygame_2f7b886e356f433a8184f298ab684d13\buildconfig\download_win_prebuilt.py", line 290, in ask
update(x86=x86, x64=x64)
File "C:\Users\ronit\AppData\Local\Temp\pip-install-j1yeb0r5\pygame_2f7b886e356f433a8184f298ab684d13\buildconfig\download_win_prebuilt.py", line 273, in update
download_prebuilts(download_dir, x86=x86, x64=x64)
File "C:\Users\ronit\AppData\Local\Temp\pip-install-j1yeb0r5\pygame_2f7b886e356f433a8184f298ab684d13\buildconfig\download_win_prebuilt.py", line 124, in download_prebuilts
download_sha1_unzip(url, checksum, temp_dir, 1)
File "C:\Users\ronit\AppData\Local\Temp\pip-install-j1yeb0r5\pygame_2f7b886e356f433a8184f298ab684d13\buildconfig\download_win_prebuilt.py", line 54, in download_sha1_unzip
response = urllib.urlopen(request).read()
File "C:\msys64\mingw64\lib\python3.9\urllib\request.py", line 214, in urlopen
return opener.open(url, data, timeout)
File "C:\msys64\mingw64\lib\python3.9\urllib\request.py", line 517, in open
response = self._open(req, data)
File "C:\msys64\mingw64\lib\python3.9\urllib\request.py", line 534, in _open
result = self._call_chain(self.handle_open, protocol, protocol +
File "C:\msys64\mingw64\lib\python3.9\urllib\request.py", line 494, in _call_chain
result = func(*args)
File "C:\msys64\mingw64\lib\python3.9\urllib\request.py", line 1389, in https_open
return self.do_open(http.client.HTTPSConnection, req,
File "C:\msys64\mingw64\lib\python3.9\urllib\request.py", line 1349, in do_open
raise URLError(err)
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)>
Making dir :prebuilt_downloads:
Downloading... https://www.libsdl.org/release/SDL2-devel-2.0.18-VC.zip ed561079ec622b0bab5a9e02976f5d540b0622da
---
For help with compilation see:
https://www.pygame.org/wiki/CompileWindows
To contribute to pygame development see:
https://www.pygame.org/contribute.html
---
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed
× Encountered error while generating package metadata.
╰─> See above for output.
note: This is an issue with the package mentioned above, not pip.
hint: See above for details.
I've tried upgrading pip, downgrading pip, installing a new version of Python, and I've tried an assortment of variations to the install command to get it to work. Trying to upgrade the certificate changed the error to this.
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)'))': /simple/pygame/
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)'))': /simple/pygame/
WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)'))': /simple/pygame/
WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)'))': /simple/pygame/
WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)'))': /simple/pygame/
Could not fetch URL https://pypi.org/simple/pygame/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pygame/ (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)'))) - skipping
ERROR: Could not find a version that satisfies the requirement pygame (from versions: none)
ERROR: No matching distribution found for pygame
The solutions I find online seem to be oriented towards Mac, and I'm running Windows. I don't understand where the issue is happening, because Python programs are running perfectly fine (I've tried on both VSC and PyCharm, and there doesn't seem to be any issues). How do I go about resolving this?
Edit The question may seem similar to others, but I have tried the solutions related to pip install and none of them have worked. The question regarding proxies does not apply in this scenario. The issue does not have anything to do with Python code itself.
Edit 2: Resolution Resolved the issue. Had to uninstall pretty much everything, remove Python 3.9 and pip from the mingw64 folder and then use a fresh non-mingw version of pip - that seems to have resolved it. No idea why that fixed it, because I was able to install tkinter just fine, so if anybody's able to shed light on it that would be really helpful because I cannot for the life of me understand what was going wrong. I know now though, with programming, uninstall/reinstall always works.