Python ライブラリのインポート順序が大事な場合がある!!!

こんにちは、kisseです。

ちょっと前なのですが、あるライブラリで環境変数の設定が必要でした。
コードから環境変数の編集をしてライブラリを読み込もうとしたんですが、環境変数が反映されておらずめっちゃハマりました。

実は、ライブラリで環境変数を利用している場合、ライブラリのインポート時に環境変数の読み込みがされていたようなんです。
僕はその辺を知らなかったので間違った順番でコードを書いてしまいました。。。

今回はその問題についてです。



どんなコードを書いたか

何をしたくて、どのライブラリを使用したかは覚えてるんですが、肝心なコードの詳細は覚えてないので、擬似コード的に書きます。
(バイト先で書いたコードなんで手元にコードがないんですよね。)
環境変数の設定にはosライブラリを使い、環境変数を利用するライブラリはgeocoderというライブラリでした。

# いつもの癖で、一番最初に使用ライブラリを全部インポートしました。
# これがハマり始めだったんですが。
import os
import geocoder

# 環境変数の設定
os.environ['(環境変数名)'] = '(値)'

# geocoderライブラリを使用中...
...
...

# エラー発生!!!
# 設定した環境変数がないって怒られた!!!

以上が僕がエラーに遭遇するまでに書いたコードです。
設定したはずの環境変数が設定されてないって怒られました。

その後、ライブラリのインポート時に環境変数が読み込まれることがわかり、コードを修正しました。

修正後のコード

環境変数を設定してからgeocoderライブラリを読み込みます。

# まずは環境変数を読み込むためのライブラリをインポートする
import os

# 環境変数を設定
os.environ['(環境変数名)'] = '(値)'

# geocoderライブラリをインポートする
import geocoder

# geocoderライブラリを使用...
...

...

# エラー出ずに処理が終了した!!!

無事に処理が終わり、結果を得ることができました!



ライブラリのインポート順には気をつけよう

あんまりこういうエラーに遭遇したことないのでわかりませんが、環境変数周りの他にもライブラリのインポート順が重要になる場合があるかもしれません。

こういうように、ライブラリのインポート順が大事な場合もあることを覚えていた方がいいですね。
気をつけます。

最後まで読んでいただきありがとうございます。

最近僕Pythonにハマってるので、このブログにはPythonの関連記事が多くあります!
他の記事もぜひ読んでみてください!

あわせて読みたい