64

Python アプリケーションに pip と virtualenv を使用しています。依存関係に触れずにアプリケーションの新しいバージョンにアップグレードしたいと考えています。を使用するpip install -Uと、すべてのパッケージをアップグレードしようとし、利用可能な新しいバージョンがない場合でも、同じバージョンの依存関係パッケージをアンインストールして再インストールします。

私も試しpip install -U --no-depsてみましたが、アップグレードではなく通常のインストールと同等のようです。私がやりたいことをするフラグの組み合わせはありますか?

4

3 に答える 3

63

概要:

  • インストール済みのパッケージをアップグレードせずに新しいパッケージをインストールする: pip install(なし-U)
  • 要件に従って古いパッケージのみをアップグレードします: pip install --upgrade --upgrade-strategy only-if-needed(新しいバージョンのデフォルト)
  • パッケージとすべての依存関係を最新バージョンにアップグレード: pip install --upgrade --upgrade-strategy eager(古いバージョンのデフォルト)
  • 依存関係に触れずにリストされたパッケージをインストールまたはアップグレードします: --no-deps

更新(@Jether のコメントに感謝): pip の最新バージョンを使用している場合、必要な場合にのみ依存関係を更新することがデフォルトの動作になり、特別なことをする必要はありません! 以下の回答は、古いバージョンの pip の手順の概要を示しています (移植可能にしたい場合は、新しいバージョンでも機能します)。

本当に依存関係に触れたくない場合は、実際に行く方法は

pip install -U --no-deps mypackage

しかし、必要でない限り、依存関係をアップグレードしないことが通常必要になると思います。その場合、次を使用できます。

pip install --upgrade --upgrade-strategy only-if-needed mypackage

これは、パッケージがインストールされているよりも新しいバージョンを必要とする場合にのみ、要件を更新します。

于 2017-01-04T19:21:59.467 に答える
58

virtualenvプロジェクトを試してみたところ、問題なくpip install -U --no-deps mypackage動作しているようです。mypackageをダウンロードするだけで、他には何もありません。あなたのセットアップはどのようなものですか?

于 2010-05-21T09:22:29.990 に答える
4

あなたが正しい。--no-deps追加したとき、既存のバージョンのアンインストールを怠っていたと思いました。しかし、もう一度試してみたところ、問題がないことがわかりました。

$ pip install -U --no-deps myproj
Downloading/unpacking myproj
  Downloading myproj-1.0-trunk.31072.tar.gz (43Kb): 43Kb downloaded
  Running setup.py egg_info for package myproj
Installing collected packages: myproj
  Found existing installation: myproj 1.0-trunk.31053
    Uninstalling myproj:
      Successfully uninstalled myproj
  Running setup.py install for myproj
Successfully installed myproj
Cleaning up...
于 2010-06-10T00:00:11.720 に答える