conda コマンドを使用して、`extern "Python": function Cryptography_locking_cb() called, but @ffi.def_extern() was not called in the current subinterpreter. Returning 0.` が出る現象とその解決策

現象

私の環境では、conda コマンドを使用すると、以下のメッセージが表示される現象が発生してました。

extern "Python": function Cryptography_locking_cb() called, but @ffi.def_extern() was not called in the current subinterpreter. Returning 0.

1回のコマンド実行で上記メッセージが何十何百と現れるので、本来のコマンドの結果がコンソール上で確認できなくなる程でした。
メッセージが現れる具体的なコマンドとしては、以下の場合でした。

  • conda install hogehoge
    • インストールした時だけでなく、インストールの確認でキャンセルしたときでも発生
  • conda search hogehoge

conda info -econda list では発生しませんでした。 おそらくネットワークに問い合わせるコマンドの時に発生するようです。

解決策

デフォルト環境(base 環境)のcryptography のバージョンを上げることで解決しました。
つまり、base 環境で以下のコマンドを実行しました。

conda update cryptography

更新前のバージョンは1.4で更新後は2.3.1になりました。 conda install hogehoge を実行しても、extern "Python" ... メッセージは出なくなりました。

base 以外の環境を持つとき(補足)

base 以外の環境を持つとき、base 以外の環境のcryptography のバージョンを上げるだけでは問題は解決しませんでした。
例えばbase 以外の環境env1 があるとします。 base 環境のcryptography のバージョンが古い状態で、env1 のcryptography のバージョンを上げました。 このときenv1 にアクティベートした状態でconda install hogehoge コマンドを実行したら、 extern "Python" ... メッセージは表示されてしまい、問題は解決しませんでした。

逆に、base 環境のcryptography のバージョンを上げれば、base 以外の環境のcryptography のバージョンは上げなくても大丈夫でした。
例えばbase 以外の環境env2 があるとします。 env2 のcryptography のバージョンが古い状態で、base 環境のcryptography のバージョンを上げました。 このときenv2 にアクティベートした状態でconda install hogehoge コマンドを実行したら、 extern "Python" ... メッセージは表示されなくなり、問題が解決しました。

参考

python - Weird repeated sequence printed to console when installing packages through conda - Stack Overflow

上記のStack Overflow のアンサーではpip でアップデートする方法が示されています。 私の場合は、conda でアップデートしても問題ありませんでした。

環境

  • conda: 4.5.11
  • cryptography: 1.4 -> 2.3.1
  • python: 3.5.2
  • Windows 10