私は--no-site-packages
オプションで作成された新鮮なvirtualenvを使ってMySQL_pythonアダプターのバージョン1.2.2をインストールしようとしています。 PyPiに表示される現在のバージョンは 1.2.3 です。古いバージョンをインストールする方法はありますか?私はこれがそれをするべきであることを述べる記事を見つけました:
pip install MySQL_python==1.2.2
ただし、インストール時には、サイトパッケージにMySQL_python-1.2.3-py2.6.Egg-infoが表示されたままです。これはこのパッケージ特有の問題なのか、それとも私は何か悪いことをしているのか?
まず、あなたがやろうとしていることには2つの問題があります。あなたはすでにインストールされたバージョンを持っているので、現在の既存のドライバをアンインストールするか、pip install -I MySQL_python==1.2.2
を使うべきです。
しかし、これでうまくいかないことがすぐにわかります。 pipのインストールログを見るか、またはpip install -Iv MySQL_python==1.2.2
を実行すると、PyPI URLリンクはMySQL_python v1.2.2では機能しません。あなたはここでこれを確認することができます: http://pypi.python.org/pypi/MySQL-python/1.2.2
Sourceforge.netの最近のアップグレードとPyPIの古いURLにより、ダウンロードリンク404と代替URLリンクは無限にリダイレクトされています。
ドライバを正しくインストールするには、次の手順に従います。
pip uninstall MySQL_python
pip install -Iv http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.2/MySQL-python-1.2.2.tar.gz/download
pip install
コマンドでバージョン範囲を使うことさえできます。このようなもの:
pip install 'stevedore>=1.3.0,<1.4.0'
そして、パッケージが既にインストールされていて、それをダウングレードしたい場合は、次のように--force-reinstall
を追加します。
pip install 'stevedore>=1.3.0,<1.4.0' --force-reinstall
この記事で提案されている1つの方法 は、pip
の中のversionを
pip install -Iv MySQL_python==1.2.2
すなわち==
を使用して、そのバージョンだけをインストールするためにバージョン番号を述べてください。 -I, --ignore-installed
はすでにインストールされているパッケージを無視します。
初回、アップグレード、またはダウングレードのいずれであっても特定のバージョンのPythonパッケージをインストールするには:
pip install --force-reinstall MySQL_python==1.2.4
MySQL_pythonバージョン1.2.2は利用できないので、私は別のバージョンを使用しました。インデックスから利用可能なすべてのパッケージバージョンを表示するには、バージョンを除外します。
pip install MySQL_python==
私はあなたが既にそれをインストールしたパッケージを持っているならば、pipはそれを他のバージョンで上書きしないと信じます。以前のバージョンを無視するには-I
を使用してください。
これはpipのバージョン10で導入された重大な変更であるように思われたので、私は互換性のあるバージョンに格下げしました:
pip install 'pip<10'
このコマンドは、バージョン10より前のモジュールのバージョンをインストールするようにpipに指示します。これを virutalenv で実行すると、サイトにインストールしたPythonが台無しになることはありません。
時々、以前にインストールされたバージョンがキャッシュされます。
~$ pip install pillow==5.2.0
それは以下を返します。
要件はすでに満たされています:/home/ubuntu/anaconda3/lib/python3.6/site-packages(5.2.0)のpillow == 5.2.0
これを上書きするには、 - no-cache-dirを-Iと一緒に使用します。
~$ pip install --no-cache-dir -I pillow==5.2.0
あなたがバージョンでどんなパッケージでもインストールすることができる2つの方法があります: - A)。 pip install -Iv package-name == version B)。 pip install -vパッケージ名==バージョン
のために
ここで、インストール中に-Iオプションを使用している場合(パッケージが既にインストールされているかどうかわからない場合)( 'pip install -Iv pyreadline == 2. *'などのように)、新しいファイルをインストールしますいくつかの異なるバージョンを持つ同じ既存のパッケージと別のパッケージ。
Bの場合
2.その後、 pip list によって既にインストールされているものを確認します。
3.パッケージのリストに特定のバージョンでインストールしたいパッケージが含まれている場合は、まずこのバージョンのパッケージをアンインストールすることを pip uninstall package-name の順に選択してください。
4.これで pip install -vパッケージ名==バージョン のようにして、同じパッケージを特定のバージョンに再インストールすることができます。 pip install -v pyreadline == 2. *
私は最近pip
の-I
フラグを使用しているときに問題に遭遇しました。
-I
は not 続行する前に既存のパッケージをアンインストールします。古いものの上にインストールするだけです。これは、バージョン間で削除されるべきファイルが代わりにそのまま残されることを意味します。これらのファイルが他のインストール済みモジュールと名前を共有する場合、これは奇妙な振る舞いを引き起こす可能性があります。
たとえば、package
という名前のパッケージがあるとしましょう。いずれかのpackage
sファイルで、それらはimport datetime
を使用します。現在、[email protected]
では、これは標準ライブラリdatetime
モジュールを指していますが、[email protected]
では、標準ライブラリバージョンの代わりとしてローカルdatetime.py
を追加しています(何らかの理由で)。
それでは、pip install package==3.0.0
を実行したとしましょうが、後で実際にバージョン2.0.0
が欲しいことがわかります。今pip install -I package==2.0.0
を実行すると、 古いdatetime.py
ファイルは削除されないので、import datetime
を呼び出すと間違ったモジュールがインポートされます。
私の場合、新しいバージョンのパッケージにはPython 3とのみ互換性のあるファイルが追加されていたため、奇妙な構文エラーが発生しました。
これに基づいて、私は古いパッケージをアンインストールすることはインストールされたパッケージバージョンを更新するときに-I
を使用することより常に望ましいと主張します。