web-dev-qa-db-ja.com

pipの `npm install package --save-dev`と同等のものは何ですか?

Nodejsでは、npm install package --save-devを実行して、インストールされたパッケージをパッケージに保存できます。

Pythonパッケージマネージャーpipで同じことを実現するにはどうすればよいですか? requirements.pipのようなものを使用してパッケージをインストールした直後に、パッケージ名とそのバージョンをpip install package --save-dev requirements.pipなどに保存したいと思います。

170
hllau

pipに相当するものはありません。

最良の方法はpip install package && pip freeze > requirements.txt

ドキュメントページ で利用可能なすべてのオプションを確認できます。

本当に気になるのであれば、-s引数を取り、requirements.txtファイルに自動的にフリーズするカスタムbashスクリプト(pips)を書くことはそれほど難しくありません。

編集1

これを書いて以来、NPMに似たauto --save-devオプションの提供に変更はありませんが、Kenneth Reitz(requestsの著者など)は better pip workflowpipの更新をより適切に処理します。

Edit 2

上記の「より良いpipワークフロー」の記事からリンクされているように、要件と仮想環境を管理するために pipenv を使用することをお勧めします。最近これをよく使って、移行がどれほど簡単かを要約したいと思います。

pipenvのインストール(Macの場合)

brew install pipenv

pipenvは、独自の仮想環境を作成および管理するため、既存のrequirements.txtを含むプロジェクトで、すべての要件をインストールします(Python3.7を使用しますが、--threeを削除できますnot):と同じくらい簡単です

pipenv --three install

コマンドを実行するためのvirtualenvのアクティブ化も簡単です

pipenv Shell

インストール要件により、PipfileおよびPipfile.lockが自動的に更新されます

pipenv install <package>

古いパッケージを更新することも可能です

pipenv update

package.jsonpackage-lock.jsonに似た感触があるので、特にnpmのバックグラウンドから来ている場合は チェックアウト を強くお勧めします

138
Ewan

このシンプルなラインが出発点です。簡単にbashコマンドを作成して、その行でPACKAGEを再利用できます。

pip install PACKAGE && pip freeze | grep PACKAGE >> requirements.txt

単純なbash関数の例については@devsndに感謝します。

function pip-install-save { 
    pip install $1 && pip freeze | grep $1 >> requirements.txt
}

使用するには、次を実行します。

pip-install-save some-package
25
Karim N Gorjux

更新:明らかに、 pipenvはPythonメンテナーによって正式に承認されていません 、および 以前にリンクされたページ は別の組織が所有しています。このツールには長所と短所がありますが、OPが求めている結果は以下の解決策でも得られます。

pipenv は、pipをラップする依存関係管理ツールであり、とりわけ、あなたが求めているものを提供します。

https://docs.pipenv.org/basics/#example-pipenv-workflow

$ pipenv install <package>

これにより、Pipfileが存在しない場合に作成されます。存在する場合は、提供された新しいパッケージで自動的に編集されます。

Pipfilepackage.jsonと直接同等ですが、Pipfile.lockpackage-lock.jsonに対応します。

3
dskrvk

pipを簡単にハックして、--saveオプションをインストール/アンインストールコマンドに追加しました。

このハックの詳細については、私のブログをご覧ください。 http://blog.abhiomkar.in/2015/11/12/pip-save-npm-like-behaviour-to-pip/ =

インストール(GitHub): https://github.com/abhiomkar/pip-save

お役に立てれば。

2
abhiomkar

pipm と呼ばれる実際のpipをラップするpythonパッケージを作成しました。すべてのpipコマンドはそのまま機能し、さらに要件ファイルに反映されます。 pip-save(私が見つけて使用できなかった同様のツール)とは異なり、多くのファイルと環境(テスト、開発、生産など)を処理できます。また、すべての依存関係をアップグレードするコマンドもあります。

installation

pipm install pkg-name

開発依存としてのインストール

pipm install pkg-name --dev

テストの依存関係としてのインストール

pipm install pkg-name --test

除去

pipm uninstall pkg-name

すべての依存関係を更新する

pipm update

要件ファイルからすべての依存関係をインストールします

pipm install

開発依存関係を含む

pipm install --dev

2
Noortheen Raja

この小さなコマンドラインを使用してパッケージをインストールし、そのバージョンをrequirements.txtに保存しています:pkg=package && pip install $pkg && echo $(pip freeze | grep -i $pkg) >> requirements.txt

0

これを行うためのシェル関数を作成してはどうですか?以下のコードを~/.profileまたは~/.bashrcに追加します

pips() {
    local pkg=$1

    if [ -z "$1" ]; then
        echo "usage: pips <pkg name>"
        return 1
    fi

    local _ins="pip install $pkg"
    eval $_ins
    pip freeze | grep $pkg -i >> requirements.txt
}

source ~/.profileまたはsource ~/.bashrcを実行して、現在の端末にインポートします

パッケージをインストールして保存する場合は、pips requestsのように実行するだけです。パッケージがインストールされた後、そのバージョンは現在のディレクトリのrequirements.txtに保存されます。

0
Anyany Pan

手動 Makefile(またはテキストファイルに保存してからMakefileにインポート)で保存できます:


PYTHON=.venv/bin/python # path to pyphon
PIP=.venv/bin/pip # path to pip
SOURCE_VENV=. .venv/bin/activate


install:
    virtualenv .venv
    $(SOURCE_VENV) && $(PIP) install -e PACKAGE
    $(SOURCE_VENV) && $(PIP) install -r requirements.txt # other required packages

そして、単にmake installを実行します

0
Evan Lévesque