1. ホーム

pythonパッケージクローラー関連のコードエラー('Could not find a suitable TLS CA certificate bundle, invalid path: C:³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³)

2022-02-28 05:15:33

最近、pythonでクローラーコードを書きました。ソースプログラムは問題なく動作しますが、パッケージはエラー "Could not find a suitable TLS CA certificate bundle" を報告します。

理由を調べてみると、クローラーが

import requests

リクエストライブラリのパッケージ化後、"Could not find a suitable TLS CA certificate bundle"問題が発生し、パッケージ化後のデフォルトパスで cacert.pem ファイルが見つからなくなりました。

実際には、プログラムをパッケージ化するときにこのような問題が発生するのは簡単です、ライブラリも他の多くの関連するライブラリやファイルが含まれている必要があります、ソースプログラムで自動的に呼び出されます、冒頭に参照する必要はありませんが、パッケージング後にexeプログラムは、デフォルトで必要とします。

最初に考えたのは、このディレクトリにこのファイルが見当たらないので、このファイルを手動でコピーすればいいのか、ということでした。pythonのインストールパスである \Libsite-packages⇄cacert.pem ファイルをコピーし、コピーしようと思ったら requests ファイルがないので自分で作りました。\コピーしようとしたら、requestsファイルがなかったので、自分で作りました。

その結果、まだエラーが報告されます

回避策:必要なライブラリ/ファイルをプログラムのリファレンスに手動で追加します。

1. Pythonのインストールパスである \Libsite-packages

をexeのあるディレクトリにコピーします。

exeがあるファイルの下にコピーされます。

2. 以下のコマンドをコードに追加して呼び出します。

import os
import sys
os.environ['REQUESTS_CA_BUNDLE'] = os.path.join(os.path.dirname(sys.argv[0]), 'cacert.pem')

そして、それを再パッケージ化するだけです