Skip to content

Instantly share code, notes, and snippets.

@marschhuynh
Created January 6, 2019 03:59
Show Gist options
  • Save marschhuynh/31c9375fc34a3e20c2d3b9eb8131d8f3 to your computer and use it in GitHub Desktop.
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()
@wyankx
Copy link

wyankx commented May 10, 2024

@sbrunswi try to run this script with sudo
If that doesn't help, try to use chmod -R 777 {path to your site-packages folder}/certifi
I'm not sure, but I hope it helps

Copy link

ghost commented Jul 31, 2024

Still getting error, @arkahome , could you please help to fix the issue,

@marschhuynh

-- pip install --upgrade certifi9-5094-4f12-93b1-ace18c7ce134
Traceback (most recent call last):
File "", line 198, in run_module_as_main
File "", line 88, in run_code
File "c:\Python_FinV30\venv\Lib\site-packages\pip_main
.py", line 24, in
sys.exit(main())
^^^^^^^
File "c:\Python_FinV30\venv\Lib\site-packages\pip_internal\cli\main.py", line 78, in main
command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Python_FinV30\venv\Lib\site-packages\pip_internal\commands_init
.py", line 114, in create_command
module = importlib.import_module(module_path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\admin\AppData\Local\Programs\Python\Python312\Lib\importlib_init
.py", line 90, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "", line 1387, in _gcd_import
File "", line 1360, in _find_and_load
File "", line 1331, in _find_and_load_unlocked
File "", line 935, in _load_unlocked
File "", line 995, in exec_module
File "", line 488, in _call_with_frames_removed
File "c:\Python_FinV30\venv\Lib\site-packages\pip_internal\commands\install.py", line 16, in
from pip._internal.cli.req_command import (
File "c:\Python_FinV30\venv\Lib\site-packages\pip_internal\cli\req_command.py", line 18, in
from pip._internal.index.collector import LinkCollector
File "c:\Python_FinV30\venv\Lib\site-packages\pip_internal\index\collector.py", line 31, in
from pip.vendor import requests
File "c:\Python_FinV30\venv\Lib\site-packages\pip_vendor\requests_init
.py", line 146, in
from . import packages, utils
File "c:\Python_FinV30\venv\Lib\site-packages\pip_vendor\requests\utils.py", line 24, in
from . import certs
File "", line 1360, in _find_and_load
File "", line 1331, in _find_and_load_unlocked
File "", line 935, in _load_unlocked
File "c:\Python_FinV30\venv\Lib\site-packages\wrapt\importer.py", line 185, in _self_exec_module
notify_module_loaded(module)
File "c:\Python_FinV30\venv\Lib\site-packages\wrapt\importer.py", line 118, in notify_module_loaded
hook(module)
File "c:\Python_FinV30\venv\Lib\site-packages\certifi_win32\wrapt_pip.py", line 35, in apply_patches
import certifi
File "", line 1360, in _find_and_load
File "", line 1331, in _find_and_load_unlocked
File "", line 935, in _load_unlocked
File "c:\Python_FinV30\venv\Lib\site-packages\wrapt\importer.py", line 185, in _self_exec_module
notify_module_loaded(module)
File "c:\Python_FinV30\venv\Lib\site-packages\wrapt\importer.py", line 118, in notify_module_loaded
hook(module)
File "c:\Python_FinV30\venv\Lib\site-packages\certifi_win32\wrapt_certifi.py", line 26, in apply_patches
if not verify_combined_pem():
^^^^^^^^^^^^^^^^^^^^^
File "c:\Python_FinV30\venv\Lib\site-packages\certifi_win32\wincerts.py", line 65, in verify_combined_pem
with open(certifi_pem()) as certifi_pem_handle:
^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: 'c:\Python_FinV30\venv\Lib\site-packages\certifi\cacert.pem'Traceback (most recent call last):
File "c:\Python_FinV30\install_certifi.py", line 44, in
main()
File "c:\Python_FinV30\install_certifi.py", line 24, in main
subprocess.check_call([sys.executable,
File "C:\Users\admin\AppData\Local\Programs\Python\Python312\Lib\subprocess.py", line 413, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['c:\Python_FinV30\venv\Scripts\python.exe', '-E', '-s', '-m', 'pip', 'install', '--upgrade', 'certifi']' returned non-zero exit status 1.

@RongGG123
Copy link

Great, it solves the problem directly!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment