pipアンインストールの確認プロンプトをバイパスする


93

スーパーユーザー環境ですべてのdjangoパッケージをアンインストールして、すべてのwebapp依存関係がvirtualenvにインストールされていることを確認しようとしています。

sudo su
sudo pip freeze | grep -E '^django-' | xargs pip -q uninstall

しかし、pipはすべてのパッケージのアンインストールを確認したいと考えており-y、pipのオプションはないようです。Pythonモジュールのバッチをアンインストールするためのより良い方法はありますか?rm -rf .../site-packages/行くのに適切な方法はありますか?easy_installの代替手段はありますか?

あるいは、システムのpythonモジュールに依存してこれらの依存関係を満たすのではなく、pipにすべての依存関係をvirtualenvにインストールするように強制する方がよいでしょうpip --upgrade install。ただし、同じように古いバージョンでも、システムモジュールをオーバーライドするように強制します。virtualenvをアクティブ化しようpip install --upgrade -r requirements.txtとしましたが、システムパスに存在する依存関係もインストールされているようですが、システムモジュールが古いためかどうかはわかりません。そして、man pipこの動作を保証していないようです(つまり、システムサイトにすでに存在する同じバージョンのパッケージをインストールします-パッケージ)。

回答:


204

pipバージョン7.1.2以降、実行できます pip uninstall -y <python package(s)>

pip uninstall -y package1 package2 package3

またはファイルから

pip uninstall -y -r requirements.txt

65

Pipには--yesオプションは含まれていません(pipバージョン1.3.1以降)。

回避策:パイプはい、それに!

$ sudo ls  # enter pw so not prompted again
$ /usr/bin/yes | sudo pip uninstall pymongo

2
ああ、なんて簡単なんだ。UNIXプログラムのリマインダーをありがとう。yesとても便利です。
ホブ2013年

しかし、これでうまくいくとは思いません(今日の私のシステムで試すには臆病すぎます)。yes | sudo pip freeze | grep -E '^django-' | xargs pip -q uninstallなぜなら、yesesは引数/コマンドではpip freezeなく、によって飲み込まれてしまうxargsからpip uninstallです。
ホブ2013年

3
pip freeze > all_to_uninstall.txt yes | pip uninstall -r all_to_uninstall.txt
ニック

8

からすべてのパッケージをアンインストールする場合はrequirements.txt

pip uninstall -y -r requirements.txt

1

あるいは、システムのpythonモジュールに依存してこれらの依存関係を満たすよりも、pipにすべての依存関係をvirtualenvにインストールするように強制する方がよいでしょうか。

はい。組み込みのシステムにインストールされたパッケージをあまりいじらないでください。特にOSXのシステムパッケージの多く(debianおよび派生型でさえ)はそれらに過度に依存しています。

pip --upgrade installですが、同じように古いバージョンでも、システムモジュールを上書きするように強制的にインストールします。

システムパッケージにすでに存在するvenv内にインストールされているパッケージがさらにいくつかある場合、特にそれらが異なるバージョンである場合は、大したことではありません。それがvirtualenvの要点です。

virtualenvをアクティブ化してから、pip install --upgrade -r Requirements.txtを試してみましたが、システムパスに存在する依存関係もインストールされているようですが、システムモジュールが古いためかどうかはわかりません。そして、man pipはこの動作を保証していないようです(つまり、システムサイトにすでに存在する同じバージョンのパッケージをインストールします-パッケージ)。

いいえ、--no-site-packagesフラグを使用して作成した場合、または必要なバージョンと現在のバージョンが異なる場合を除いて、メインインストールにすでにあるパッケージはインストールされません。


1

ラクシュマンプラサドは正しかった、pip --upgradeおよび/またはvirtualenv --no-site-packages行く方法です。システム全体のPythonモジュールをアンインストールするのは悪いことです。

--upgradepipのオプションは、必要なモジュールがシステム環境にすでに存在していても、必要なバージョンまたは利用可能な最新バージョンがシステムバージョンと同じであっても、仮想環境に必要なモジュールをインストールします。

pip --upgrade install

また、仮想環境を作成するときに--no-site-packagesオプションを使用すると、システムパスに欠落しているモジュールが存在することで、欠落している依存関係をマスクできないようになります。これは、モジュールをあるパッケージから別のパッケージに移行する際の問題を明らかにするのに役立ちます。たとえば、pinax.apps.groups-> django-groups、特に問題がdjangoのload templatetagsステートメントにあり、使用可能なすべてのモジュールでtemplatetagsディレクトリとタグ定義を検索する場合に役立ちます。以内に。


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