Python

Pythonの落とし穴:__len__メソッドを実装したらオブジェクトの真偽値判定が変わってしまった話

Python

Pythonの落とし穴:__len__メソッドを実装したらオブジェクトの真偽値判定が変わってしまった話

こんにちは! Pythonでカスタムクラスを作成していて、 「オブジェクトは存在するのにif文でFalseと判定される」 という不可解な現象に遭遇したことはありませんか? この記事では、__len__メソッドを実装することで生じる、予期しない真偽値判定の挙動について解説いたします! 実際に遭遇したバグ ユーザーの投稿を管理するクラスを実装していたときのことです class PostManager: """ブログ投稿を管理するクラス""" def __init__(self, user_id): self.user_id = user_id self._posts = [] self._cache = {} def __len__(self): """投稿数を返す""" return len(self._posts) def add_post(

By Qualiteg プロダクト開発部
その処理、GPUじゃなくて勝手にCPUで実行されてるかも  ~ONNX RuntimeのcuDNN 警告と対策~

日々の開発Tips

その処理、GPUじゃなくて勝手にCPUで実行されてるかも ~ONNX RuntimeのcuDNN 警告と対策~

こんにちは! 本日は、ONNX RuntimeでGPU推論時の「libcudnn.so.9: cannot open shared object file」エラーの解決方法についての内容となります。 ONNX Runtimeを使用してGPU推論を行う際、CUDAプロバイダの初期化エラーに遭遇することがありますので、このエラーの原因と解決方法を解説いたします。 エラーメッセージの詳細 [E:onnxruntime:Default, provider_bridge_ort.cc:2195 TryGetProviderInfo_CUDA] /onnxruntime_src/onnxruntime/core/session/provider_bridge_ort.cc:1778 onnxruntime::Provider& onnxruntime::ProviderLibrary::Get() [ONNXRuntimeError] : 1 : FAIL : Failed to load

By Qualiteg プロダクト開発部
Python仮想環境でハマった依存関係エラーの解決方法

日々の開発Tips

Python仮想環境でハマった依存関係エラーの解決方法

こんにちは!今日は入れた覚えの無いパッケージが引き起こす「あるある」な謎エラーと原因について記載します。 今回の環境は Windows に Python,Anaconda を入れた状態で発生した例ですが、Linuxでも本質的には同じだとおもいます。 グローバル環境の汚染が原因だった話 問題の発生 Pythonプロジェクトの環境構築中、必要なパッケージをインストールしていたら、突然エラーメッセージが表示されました。 pip install opencv-python==4.8.1.78 実行後に表示されたエラー ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following

By Qualiteg プロダクト開発部
Anaconda base環境を初期状態にリセットする方法

Python

Anaconda base環境を初期状態にリセットする方法

こんにちは!Anacondaを使っていて、うっかりbase環境に余計なパッケージをインストールしてしまった経験はありませんか? 私も先日、FastAPIをbase環境にインストールしてしまい、依存関係がぐちゃぐちゃになってしまいました。 この記事では、Anacondaのbase環境を安全に初期状態に戻す方法を解説します。 なぜbase環境は触ってはいけないのか base環境はAnacondaの基盤となる環境です。ここに直接パッケージをインストールすると・・・ * 依存関係の競合が発生しやすい * Anaconda自体の動作に影響を与える可能性がある * 他の仮想環境の作成に問題が生じることがある そのため、プロジェクトごとに仮想環境を作成して作業するのがベストプラクティスです。 base環境をリセットする3つの方法 方法1: 最近の変更だけを元に戻す(軽症の場合) まず、最近何をインストールしたか確認します # リビジョン履歴を確認 conda list --revisions 出力例 2024-01-15 10:30:15 (rev 3)

By Qualiteg プロダクト開発部