-
-
Save marschhuynh/31c9375fc34a3e20c2d3b9eb8131d8f3 to your computer and use it in GitHub Desktop.
# install_certifi.py | |
# | |
# sample script to install or update a set of default Root Certificates | |
# for the ssl module. Uses the certificates provided by the certifi package: | |
# https://pypi.python.org/pypi/certifi | |
import os | |
import os.path | |
import ssl | |
import stat | |
import subprocess | |
import sys | |
STAT_0o775 = ( stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR | |
| stat.S_IRGRP | stat.S_IWGRP | stat.S_IXGRP | |
| stat.S_IROTH | stat.S_IXOTH ) | |
def main(): | |
openssl_dir, openssl_cafile = os.path.split( | |
ssl.get_default_verify_paths().openssl_cafile) | |
print(" -- pip install --upgrade certifi") | |
subprocess.check_call([sys.executable, | |
"-E", "-s", "-m", "pip", "install", "--upgrade", "certifi"]) | |
import certifi | |
# change working directory to the default SSL directory | |
os.chdir(openssl_dir) | |
relpath_to_certifi_cafile = os.path.relpath(certifi.where()) | |
print(" -- removing any existing file or link") | |
try: | |
os.remove(openssl_cafile) | |
except FileNotFoundError: | |
pass | |
print(" -- creating symlink to certifi certificate bundle") | |
os.symlink(relpath_to_certifi_cafile, openssl_cafile) | |
print(" -- setting permissions") | |
os.chmod(openssl_cafile, STAT_0o775) | |
print(" -- update complete") | |
if __name__ == '__main__': | |
main() |
I use Win11, and first it didn't find the directory, so I created the folder 'C:\Program Files\Common Files\SSL' manually.
Then, I'm having this error - ideas?
Traceback (most recent call last):
File "C:...\certif.py", line 44, in
main()
File "C:...\certif.py", line 38, in main
os.symlink(relpath_to_certifi_cafile, openssl_cafile)
PermissionError: [WinError 5] Access is denied: '..\..\..\...\venv\lib\site-packages\certifi\cacert.pem' -> 'cert.pem'
Edit: I was too quick to post. It failed when running from PyCharm but then worked when running it via Powershell as admin
thank you
Thank you .. helped a lot
Thanks a lot !!
Ty
Just change this part to not get FileNotFound Error :
FileNotFoundError: [WinError 2] The system cannot find the file specified: 'C:\Program Files\Common Files\ssl'
try:
os.chdir(openssl_dir)
except FileNotFoundError:
os.makedirs(openssl_dir)
os.chdir(openssl_dir)
Full Code :
# install_certifi.py
#
# sample script to install or update a set of default Root Certificates
# for the ssl module. Uses the certificates provided by the certifi package:
# https://pypi.python.org/pypi/certifi
import os
import os.path
import ssl
import stat
import subprocess
import sys
STAT_0o775 = ( stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR
| stat.S_IRGRP | stat.S_IWGRP | stat.S_IXGRP
| stat.S_IROTH | stat.S_IXOTH )
def main():
openssl_dir, openssl_cafile = os.path.split(
ssl.get_default_verify_paths().openssl_cafile)
print(" -- pip install --upgrade certifi")
subprocess.check_call([sys.executable,
"-E", "-s", "-m", "pip", "install", "--upgrade", "certifi"])
import certifi
# change working directory to the default SSL directory
try:
os.chdir(openssl_dir)
except FileNotFoundError:
os.makedirs(openssl_dir)
os.chdir(openssl_dir)
relpath_to_certifi_cafile = os.path.relpath(certifi.where())
print(" -- removing any existing file or link")
try:
os.remove(openssl_cafile)
except FileNotFoundError:
pass
print(" -- creating symlink to certifi certificate bundle")
os.symlink(relpath_to_certifi_cafile, openssl_cafile)
print(" -- setting permissions")
os.chmod(openssl_cafile, STAT_0o775)
print(" -- update complete")
if __name__ == '__main__':
main()
Thank you!
perfect!! thanks