pythonパッケージクローラー関連のコードエラー('Could not find a suitable TLS CA certificate bundle, invalid path: C:³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³)
最近、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')
そして、それを再パッケージ化するだけです
関連
-
libc++abi.dylib: NSException タイプの捕捉されない例外で終了するエラー
-
RuntimeWarning: double_scalars で無効な値が発生しました precision.append(tp[i] * 1.0 / (tp[i])
-
非静的フィールドへの静的参照はできない
-
clang: error: linker command failed with exit code 1 (use -v to see invocati
-
ruby がエラー Failed to build gem native extension を報告しました。
-
を作ってください。*** ターゲットが指定されておらず、makefileも見つかりませんでした。
-
Echartsがエラーを発生させる: echarts Uncaught ReferenceError: echarts is not defined
-
ERR_CONTENT_LENGTH_MISMATCH問題
-
エラーです。関数の戻り値を書き込みコンテキストで使用できません 解決策
-
データが長すぎてカラムソリューションが使えない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Linux での C++ コンパイルエラー:コマンドラインオプション "-std=c++11" が認識されない。
-
MySql ERROR 1046(3D000): 選択されたデータベースがない場合の解決策
-
c++のエラーエラー: "***"の前に期待される初期化子
-
ante react Warning index.js:1 Warning: findDOMNode is deprecated in StrictMode.findDOMNode は StrictMode では非推奨です。
-
ldap_bind: 無効な認証情報 (49)
-
ArrayAdapterの外観は、リソースIDがTextViewである必要がある問題について
-
AssertionError [ERR_ASSERTION]: タスク関数を指定しなければならない、gulpのバージョンが一致しない
-
Ionic4 + vue 起動時のエラー Uncaught TypeError: 未定義またはNULLをオブジェクトに変換できない
-
DataIntegrityViolationExceptionエラー
-
docker 失敗 Result:start-limit 解決方法