最近、どこかに文書化したいpipという-Iフラグを使用しているときに問題が発生しました。
-Iうではない先に進む前に、既存のパッケージをアンインストールします。古いものの上にインストールするだけです。つまり、バージョン間で削除する必要のあるファイルはそのまま残されます。これらのファイルが他のインストール済みモジュールと名前を共有している場合、これは奇妙な動作を引き起こす可能性があります。
たとえば、というパッケージがあるとしpackageます。packagesファイルの1 つでは、を使用しますimport datetime。現在、package@2.0.0これは標準ライブラリdatetimeモジュールを指していますが、package@3.0.0では、datetime.py何らかの理由で標準ライブラリバージョンの代わりにローカルを追加しました。
ここで私が実行すると言いますpip install package==3.0.0が、後で実際にバージョンが必要であることがわかり2.0.0ます。ここでを実行するpip install -I package==2.0.0と、古いdatetime.pyファイルは削除されないため、を呼び出すとimport datetime、間違ったモジュールがインポートされます。
私の場合、新しいバージョンのパッケージがPython 3とのみ互換性のあるファイルを追加したため、奇妙な構文エラーが発生し、Python 2をサポートするようにパッケージのバージョンをダウングレードしたとき、Python-3のみのモジュールのインポートを続行しました。
これに基づいて、古いパッケージをアンインストールすることは、インストール-Iされたパッケージのバージョンを更新するときに使用するよりも常に望ましいと主張します。
pip install MySQL_python==1.8.9