pip install 時にキャッシュが利用されるせいで上手くインストールが行えず困ったので、備忘録として解決策を記事にまとめておきます。
キャッシュを利用せずに pip install を行う方法
pip install をキャッシュを利用せずに実行するためには、下記のように --no-cache-dir オプションを付加します。
% python -m pip install --no-cache-dir package-name
キャッシュを利用したくなかった理由
なぜキャッシュを利用したくなかったかというと、pip install 時のビルドでリンクされるライブラリを変更したにも関わらず、キャッシュが利用されることでビルドがスキップされてライブラリの変更が反映されなかったためです。
一言では上手く説明できないので超具体的に説明すると、私が pip install でキャッシュが利用されて困ったのは mysqlclient のインストールをしようとした時です。
mysqlclient を pip install でインストールすると、PC 内の MySQL クライアントのライブラリとリンクされて mysqlclient が生成されることになるようです(より正確には mysqlclient から利用されるライブラリが生成される)。
で、最初 mysqlclient を pip install でインストールした際には MAMP というパッケージに含まれる MySQL クライアントのライブラリとリンクされるようにしていました。

そして、そのあとに素の MySQL をインストールしたので、そちらの MySQL クライアントのライブラリとリンクして mysqlclient が生成されるよう PATH などを変更し、まずは mysqlclient の pip uninstall を行いました。

そして、素の MySQL クライアントのライブラリとリンクした mysqlclient を生成するために再度 pip install を行いました。
が、それでも mysqlclient は MAMP 側のライブラリにリンクされたもののままだったんですね…。

要は一回目の pip install 時にビルドして生成された mysqlclient のデータがキャッシュに残っていて、二回目の pip install には mysqlclient のビルドがスキップされて(スキップされる処理が一部のものなのか全部なのかは不明)、キャッシュに残っていたデータが利用されてインストールされたということです。
なので、リンクされるライブラリを変更しようとしても pip install しても反映されなかったということです。

で、下記のようにキャッシュを利用せずに pip install を行うようにすることで、ビルドがスキップされなくなって無事に素の MySQL の MySQL クライアントのライブラリを利用する mysqlclient をインストールすることができました。

スポンサーリンク
まとめ
このページでは、pip install 時にキャッシュを利用せずにインストールするための方法について解説しました。
具体的には、pip install 時に --no-cache-dir オプションを指定することで、キャッシュ利用無しのインストールを実現することができます。
他にもキャッシュを削除して同様のインストールを実現することもできそうですね!
あまりこのオプションが必要な場面に遭遇することはないかもしれませんが、こういったオプションも存在することを知っておけば、pip 利用時に役に立つこともあるかもしれないです。
また、キャッシュを利用するデメリットについても理解していただけたのではないかと思います。変更を行なった時にそれが反映されないような場合、キャッシュを疑ってみるのもアリかもしれないです。

