web-dev-qa-db-ja.com

Pipを使って特定のパッケージバージョンをインストールする

私は--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が表示されたままです。これはこのパッケージ特有の問題なのか、それとも私は何か悪いことをしているのか?

980
Joe

まず、あなたがやろうとしていることには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
700

pip installコマンドでバージョン範囲を使うことさえできます。このようなもの:

pip install 'stevedore>=1.3.0,<1.4.0'

そして、パッケージが既にインストールされていて、それをダウングレードしたい場合は、次のように--force-reinstallを追加します。

pip install 'stevedore>=1.3.0,<1.4.0' --force-reinstall
354
user1978556

この記事で提案されている1つの方法 は、pipの中のversionを 

pip install -Iv MySQL_python==1.2.2

すなわち==を使用して、そのバージョンだけをインストールするためにバージョン番号を述べてください。 -I, --ignore-installedはすでにインストールされているパッケージを無視します。

106

初回、アップグレード、またはダウングレードのいずれであっても特定のバージョンのPythonパッケージをインストールするには: 

pip install --force-reinstall MySQL_python==1.2.4

MySQL_pythonバージョン1.2.2は利用できないので、私は別のバージョンを使用しました。インデックスから利用可能なすべてのパッケージバージョンを表示するには、バージョンを除外します。 

pip install MySQL_python==
43
Zach Weg

私はあなたが既にそれをインストールしたパッケージを持っているならば、pipはそれを他のバージョンで上書きしないと信じます。以前のバージョンを無視するには-Iを使用してください。

35
dappawit

これはpipのバージョン10で導入された重大な変更であるように思われたので、私は互換性のあるバージョンに格下げしました:

pip install 'pip<10' 

このコマンドは、バージョン10より前のモジュールのバージョンをインストールするようにpipに指示します。これを virutalenv で実行すると、サイトにインストールしたPythonが台無しになることはありません。

3
Trenton

時々、以前にインストールされたバージョンがキャッシュされます。 

~$ 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
Jack Chan

あなたがバージョンでどんなパッケージでもインストールすることができる2つの方法があります: - A)。 pip install -Iv package-name == version B)。 pip install -vパッケージ名==バージョン

のために

ここで、インストール中に-Iオプションを使用している場合(パッケージが既にインストールされているかどうかわからない場合)( 'pip install -Iv pyreadline == 2. *'などのように)、新しいファイルをインストールしますいくつかの異なるバージョンを持つ同じ既存のパッケージと別のパッケージ。

Bの場合

  1. 最初に、破損していない要件がないことを確認します。 ピップチェック

2.その後、 pip list によって既にインストールされているものを確認します。

3.パッケージのリストに特定のバージョンでインストールしたいパッケージが含まれている場合は、まずこのバージョンのパッケージをアンインストールすることを pip uninstall package-name の順に選択してください。

4.これで pip install -vパッケージ名==バージョン のようにして、同じパッケージを特定のバージョンに再インストールすることができます。 pip install -v pyreadline == 2. *

0
Samarth

私は最近pip-Iフラグを使用しているときに問題に遭遇しました。

-I not 続行する前に既存のパッケージをアンインストールします。古いものの上にインストールするだけです。これは、バージョン間で削除されるべきファイルが代わりにそのまま残されることを意味します。これらのファイルが他のインストール済みモジュールと名前を共有する場合、これは奇妙な振る舞いを引き起こす可能性があります。

たとえば、packageという名前のパッケージがあるとしましょう。いずれかのpackagesファイルで、それらは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を使用することより常に望ましいと主張します。

0
0x5453