120

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

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

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

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

4

7 に答える 7

253

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

pip uninstall -y package1 package2 package3

またはファイルから

pip uninstall -y -r requirements.txt
于 2015-11-05T23:51:40.777 に答える
68

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

回避策: yes をパイプします。

$ sudo ls  # enter pw so not prompted again
$ /usr/bin/yes | sudo pip uninstall pymongo
于 2013-05-24T23:56:46.540 に答える
1

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

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

pip --upgrade install

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

于 2011-03-05T04:41:35.537 に答える
1

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

はい。組み込みのシステムにインストールされたパッケージをいじりすぎないでください。多くのシステム パッケージ、特に OS X では (debian や派生バージョンでさえも) それらに依存しすぎています。

pip --upgrade install を実行しますが、システム モジュールをオーバーライドするために、同等に古いバージョンのインストールを強制します。

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

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

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

于 2011-03-04T06:17:59.217 に答える