【问题标题】:certificate verify failed after deleting .pth files in site-packages删除站点包中的 .pth 文件后证书验证失败
【发布时间】:2022-06-17 01:24:55
【问题描述】:

因此,当我使用以下命令行从 bitbucket 下载包 (site-packages) 时: pip install --upgrade git+ssh://git@bitbucket.ggf.com:7999/pyt/jira,pip 开始不工作了。

我尝试调试并在此输出中找到问题:

Traceback (most recent call last):
  File "C:\Programs\Python\lib\importlib\_common.py", line 89, in _tempfile
    os.write(fd, reader())
  File "C:\Programs\Python\lib\importlib\abc.py", line 371, in read_bytes
    with self.open('rb') as strm:
  File "C:\Programs\Python\lib\importlib\_adapters.py", line 54, in open
    raise ValueError()
ValueError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Programs\Python\lib\runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Programs\Python\lib\runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "C:\Programs\Python\Scripts\pip.exe\__main__.py", line 4, in <module>
  File "C:\Programs\Python\lib\site-packages\pip\_internal\cli\main.py", line 9, in <module>
    from pip._internal.cli.autocompletion import autocomplete
  File "C:\Programs\Python\lib\site-packages\pip\_internal\cli\autocompletion.py", line 10, in <module>
    from pip._internal.cli.main_parser import create_main_parser
  File "C:\Programs\Python\lib\site-packages\pip\_internal\cli\main_parser.py", line 8, in <module>
    from pip._internal.cli import cmdoptions
  File "C:\Programs\Python\lib\site-packages\pip\_internal\cli\cmdoptions.py", line 23, in <module>
    from pip._internal.cli.parser import ConfigOptionParser
  File "C:\Programs\Python\lib\site-packages\pip\_internal\cli\parser.py", line 12, in <module>
    from pip._internal.configuration import Configuration, ConfigurationError
  File "C:\Programs\Python\lib\site-packages\pip\_internal\configuration.py", line 20, in <module>
    from pip._internal.exceptions import (
  File "C:\Programs\Python\lib\site-packages\pip\_internal\exceptions.py", line 13, in <module>
    from pip._vendor.requests.models import Request, Response
  File "C:\Programs\Python\lib\site-packages\pip\_vendor\requests\__init__.py", line 135, in <module>
    from . import utils
  File "C:\Programs\Python\lib\site-packages\pip\_vendor\requests\utils.py", line 27, in <module>
    from . import certs
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "C:\Programs\Python\lib\site-packages\wrapt\importer.py", line 177, in _exec_module
    notify_module_loaded(module)
  File "C:\Programs\Python\lib\site-packages\wrapt\decorators.py", line 470, in _synchronized
    return wrapped(*args, **kwargs)
  File "C:\Programs\Python\lib\site-packages\wrapt\importer.py", line 136, in notify_module_loaded
    hook(module)
  File "C:\Programs\Python\lib\site-packages\certifi_win32\wrapt_pip.py", line 35, in apply_patches
    import certifi
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "C:\Programs\Python\lib\site-packages\wrapt\importer.py", line 177, in _exec_module
    notify_module_loaded(module)
  File "C:\Programs\Python\lib\site-packages\wrapt\decorators.py", line 470, in _synchronized
    return wrapped(*args, **kwargs)
  File "C:\Programs\Python\lib\site-packages\wrapt\importer.py", line 136, in notify_module_loaded
    hook(module)
  File "C:\Programs\Python\lib\site-packages\certifi_win32\wrapt_certifi.py", line 20, in apply_patches
    certifi_win32.wincerts.CERTIFI_PEM = certifi.where()
  File "C:\Programs\Python\lib\site-packages\certifi\core.py", line 37, in where
    _CACERT_PATH = str(_CACERT_CTX.__enter__())
  File "C:\Programs\Python\lib\contextlib.py", line 135, in __enter__
    return next(self.gen)
  File "C:\Programs\Python\lib\importlib\_common.py", line 95, in _tempfile
    os.remove(raw_path)
PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\\Users\\a77870\\AppData\\Local\\Temp\\3\\tmpjivq2gz5'

我发现如果我从 site-packages 中删除这两个文件,然后 pip 又可以工作了,所以由于某种原因这些文件使它卡住了,但我不知道为什么?

python-certifi-win32-init.pth
distutils-precedence.pth

现在这样做的问题是安装 jira 的软件包是一个需要通过 SSL 连接的 API,我猜通过删除这些 .pth 文件现在会产生一些错误?

我运行一个简单的命令得到这个输出,并且它试图连接到 Jira:

Traceback (most recent call last):
  File "C:\Programs\Python\Python3102\lib\site-packages\urllib3\connectionpool.py", line 703, in urlopen
    httplib_response = self._make_request(
  File "C:\Programs\Python\Python3102\lib\site-packages\urllib3\connectionpool.py", line 386, in _make_request
    self._validate_conn(conn)
  File "C:\Programs\Python\Python3102\lib\site-packages\urllib3\connectionpool.py", line 1040, in _validate_conn
    conn.connect()
  File "C:\Programs\Python\Python3102\lib\site-packages\urllib3\connection.py", line 414, in connect
    self.sock = ssl_wrap_socket(
  File "C:\Programs\Python\Python3102\lib\site-packages\urllib3\util\ssl_.py", line 449, in ssl_wrap_socket
    ssl_sock = _ssl_wrap_socket_impl(
  File "C:\Programs\Python\Python3102\lib\site-packages\urllib3\util\ssl_.py", line 493, in _ssl_wrap_socket_impl
    return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
  File "C:\Programs\Python\Python3102\lib\ssl.py", line 512, in wrap_socket
    return self.sslsocket_class._create(
  File "C:\Programs\Python\Python3102\lib\ssl.py", line 1070, in _create
    self.do_handshake()
  File "C:\Programs\Python\Python3102\lib\ssl.py", line 1341, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:997)

关于删除这些文件的方法有什么想法吗?

【问题讨论】:

  • 我必须使用 3.10+ (python),但是是的,我试图删除 python-certifi-win32-init.pth 的唯一原因是因为我的 pip 在那里不起作用
  • @wovano 和 python-certifi-win32-init.pth 在我的站点包文件夹中,无论我尝试运行什么命令(python),我都会从帖子中获得第一个输出,其中包含 pip
  • 有线的事情是我有这个包在多台机器上运行,但我有一个有这个错误的包。也许我用错误的凭证/证书设置了我的 git/python。已经看了8个小时了,先休息一下,明天再看
  • @wovano 明天试试
  • 很高兴您找到了解决方案。您可以将您的解决方案作为答案发布,甚至将其标记为已接受(因为尚未提供其他答案)。也许将来对其他人有用。

标签: python ssl-certificate


【解决方案1】:

删除 python-certifi-win32-init.pth 后,库的功能实际上会丢失。

Andrew Leech,python-certifi-win32、suggests to move on 的作者到他的另一个项目pip-system-certs。将库替换为 pip-system-certs (PyPI link) 为我解决了所有问题。

【讨论】:

    猜你喜欢
    • 2012-03-15
    • 2017-10-09
    • 2022-01-15
    • 2018-03-15
    • 2015-11-13
    • 2021-11-26
    • 2018-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多