pipを使用した特定のパッケージバージョンのインストール


1314

--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、サイトパッケージには表示されます。これはこのパッケージに固有の問題ですか、それとも何か問題がありますか?


17
ヒントをありがとう、これはopenpyxlの古いバージョンをインストールするのに役立ちましたpip install MySQL_python==1.8.9
tim

4
はい、これはパンダでも機能しました。ありがとう:pip install -Iv pandas==0.12.0
タンディ

1
私もうまくいきました:pip install xvfbwrapper == 0.2.4
amitdatta

回答:


895

TL; DR:

  • pip install -Iv(つまりpip install -Iv MySQL_python==1.2.2

最初に、あなたがやろうとしていることに関して2つの問題が見られます。すでにバージョンがインストールされているので、現在の既存のドライバーをアンインストールするか、pip install -I MySQL_python==1.2.2

ただし、これが機能しないことがすぐにわかります。pipのインストールログを確認した場合、または確認したpip install -Iv MySQL_python==1.2.2場合、MySQL_python v1.2.2ではPyPI URLリンクが機能しないことがわかります。これはここで確認できます: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

1
ただし、複数のバージョンを使用しても問題はないはずです。そのため、すべてのバージョンの新しいフォルダーを作成し、.pthファイルを使用します。
Jochen Ritzel、2011年

3
これは正しいバージョンをインストールするので、この質問への答えです-あなたの助けに感謝します。「_mysql」拡張のビルド中に、別の問題が発生しました:「エラー:コマンド「/usr/bin/gcc-4.2」が終了ステータス1で失敗しました」私はGCCを持っていることを知っており、MySQL_python 1.2.3のインストールはスムーズに進みます。特に1.2.2でこの問題を見た人はいますか?
Joe

別の質問をして、pipから取得したエラーメッセージを投稿してください。
Mahmoud Abdelkader 2011年

2
もちろん、リンクは次のとおりです。stackoverflow.com
Joe

4
既存のインストールをすでに削除しているのに、なぜ-Iオプションを使用するのか不思議に思います-詳細を教えてください。
Joe

509

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

pip install 'stevedore>=1.3.0,<1.4.0'

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

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

129
例: $ pip install 'xkcdpass==1.2.5' --force-reinstall
jschank

1
完璧!Ubunto 15.04で実行すると、既存のライブラリが(自動的に)指定されたバージョンに置き換えられました。私のすべての問題を解決しました!
zevij 2016

2
Python 2の場合、 'の代わりに二重引用符を使用する必要があったことを説明します "
Prime_Aqasix

6
@ HandofC'thuhlu Windows 2ではpython 2ではなく二重引用符を使用する必要があると思います
SmartManoj 2017年

3
Windowsでは二重引用符を使用します
。pipinstall

139

この投稿で提案されている1つの方法は、次のようにバージョンを記載することpipです。

pip install -Iv MySQL_python==1.2.2

つまり==、そのバージョンのみをインストールする場合は、バージョン番号を使用して言及します。-I, --ignore-installedすでにインストールされているパッケージを無視します。


1
注意してください!私はこれが異なるバージョンを隣り合わせにインストールした経験をしました!また、興味深いことに、pip listそのことを認識していませんconda listでした(そして、異なるパッケージバージョンを表示しました)。また、Pycharmを完全に混乱させました
ライオネルトレブション

66

特定のPythonパッケージバージョンを初めてインストールする場合は、アップグレードまたはダウングレードを使用します。

pip install --force-reinstall MySQL_python==1.2.4

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

pip install MySQL_python==

4
pip 10.0.1では、これが唯一の有効なソリューションです。「-I」オプションは、実際には以前のバージョンを再インストールします。
FedFranzoni

38

インストール済みのパッケージがある場合、pipはそれを別のバージョンで上書きしないと思います。-I以前のバージョンを無視するために使用します。


1
私はそれをインストールしていません---no-site-packagesオプションで作成された新しいvirtualenvを使用します
Joe

2
さて、バージョン1.2.2を要求しても、1.2.3がインストールされ、他に何もインストールされていませんか?使用した構文は、特定のバージョンを取得するために適切です。
dappawit

"--no-site-packagesオプションで作成された新しいvirtualenvを使用"; プレインストールされたライブラリが表示されunset PYTHONPATHないようにするには、コマンドのpip前にこれを付ける必要があるかもしれません
user5359531

17

以前にインストールされたバージョンがキャッシュされる場合があります。

~$ pip install pillow==5.2.0

次を返します:
要件は既に​​満たされています:/home/ubuntu/anaconda3/lib/python3.6/site-packages(5.2.0)のpillow == 5.2.0

--Iと一緒に--no-cache-dirを使用してこれを上書きできます

~$ pip install --no-cache-dir -I pillow==5.2.0

5

これはバージョン10のpipで導入された重大な変更であると思われたため、互換性のあるバージョンにダウングレードしました。

pip install 'pip<10' 

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


5

最近、どこかに文書化したい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されたパッケージのバージョンを更新するときに使用するよりも常に望ましいと主張します。


3

以下のコマンドは私のために働きました

Pythonバージョン-2.7

パッケージ-python-jenkins

コマンド- $ pip install 'python-jenkins>=1.1.1'


親愛なる反対投票者、この回答が反対投票された理由を正当化してください。
Tapan Hegde

私は反対票を投じませんでしたが、これは質問に答えず、OPが問題を解決するために使用できる有用な情報も提供しないことがわかります。
TheAmigo

0

パッケージをバージョンとともにインストールする方法は2つあります: -A)。pip install -Iv package-name == version B)。pip install -vパッケージ名==バージョン

のために

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

Bの場合

  1. 最初は、要件が満たされているかどうかを確認することをお勧めします。 ピップチェック

2.次に、pipリストによってすでにインストールされているものを確認し ます

3.パッケージのリストに特定のバージョンでインストールするパッケージが含まれている場合、より良いオプションは、最初にこのバージョンのパッケージをアンインストールすることです。pipuninstall package-name

4.次に、特定のバージョンの同じパッケージをpip install -v package-name == versionのように再インストールします。 例:pip install -v pyreadline == 2. *


0

最新バージョンに更新したいが、入力できる最新バージョンがわからない場合。

pip install MySQL_python --upgrade

これにより、MySQL_pythonが利用可能な最新バージョンに更新されます。他のパッケージバージョンでも使用できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.