web-dev-qa-db-ja.com

pipを使用して依存関係をアップグレードせずにパッケージをアップグレードしますか?

pythonアプリケーションにpipとvirtualenvを使用しています。依存関係を変更することなく、アプリケーションの新しいバージョンにアップグレードしたいと思います。pip install -U、すべてのパッケージのアップグレードを試み、新しいバージョンが利用できない場合は、同じバージョンの依存関係パッケージをアンインストールして再インストールします。

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

50
Amy G

私はvirtualenvプロジェクトとpip install -U --no-deps mypackageは問題なく動作するようです。 mypackageのみをダウンロードし、それ以外は何もしません。あなたのセットアップはどのようなものですか?

50
Y.H Wong

概要:

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

[〜#〜] update [〜#〜](@Jetherのコメントのおかげで):最新バージョンのpipを使用している場合、必要な場合にのみ依存関係を更新すると、デフォルトの動作になります。特別なことをする必要はありません。以下の答えは、古いバージョンのpipの手順の概要です(移植したい場合は、新しいバージョンでも動作します)。

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

pip install -U --no-deps mypackage

しかし、私はあなたが通常望むことは、必要でない限り依存関係をアップグレードしないことだと思います。その場合、以下を使用できます。

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

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

43
Mark

あなたが正しい。 --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...
4
Amy G