Pip'in "npm kurulum paketi --save-dev" eşdeğeri nedir?


202

Düğümlerde, npm install package --save-devkurulu paketi pakete kaydetmek için yapabilirim .

Aynı şeyi Python paket yöneticisinde nasıl başarabilirim pip? Paket adını ve sürümünü requirements.pip, paketi, benzer bir şey kullanarak yükledikten hemen sonra kaydetmek istiyorum pip install package --save-dev requirements.pip.


4
pip freeze > requirements.pip
falsetru

5
Bu aynı değil. npm install package --save-devnode_npm gereksinimleri dosyasına hem yükleme hem de ekleme işlemlerini aynı anda birleştirir. Daha kullanışlıdır. İle pip freeze1): Ben de aynı şeyi yapmak için iki komutları yapmak zorunda pip install package2)pip freeze > requirements.pip
hllau

1
Pip'in seçenekle ilgili sorunu var --save.
rutsky

Gereksinimler için setup.py kullanıyorsanız , paket sürümlerinizi setup.py'ye dondurmak için küçük bir modül oluşturdum .
AdamGold

Yanıtlar:


166

İle eşdeğeri yok pip.

En iyi yol pip install package && pip freeze > requirements.txt

Mevcut tüm seçenekleri dokümantasyon sayfalarında görebilirsiniz .

Gerçekten sizi rahatsız ederse pips, bir -sargüman alan ve requirements.txtdosyanıza otomatik olarak donan özel bir bash betiği ( ) yazmak çok zor olmaz .

Düzenle 1

Bunu yazdığından beri --save-devNPM'ye benzer bir otomatik seçenek sağlamada herhangi bir değişiklik olmamıştır, ancak Kenneth Reitz (yazarı requestsve daha fazlası), güncellemeleri daha iyi ele almak için daha iyi bir iş akışı hakkında daha fazla bilgi yayınladı pip.

Düzenle 2

Yukarıdaki "daha iyi pip iş akışı" makalesine bağlı olarak, artık pipenvgereksinimleri ve sanal ortamları yönetmek için kullanılması önerilir . Son zamanlarda bunu çok kullandıktan sonra geçişin ne kadar basit olduğunu özetlemek istiyorum:

Yükle pipenv(Mac'te)

brew install pipenv

pipenvkendi sanal ortamlarını oluşturur ve yönetir, böylece mevcut bir projede requirements.txt, tüm gereksinimleri yükler (Python3.7 kullanıyorum, ancak kaldırmazsanız kaldırabilirsiniz --three) kadar basit:

pipenv --three install

Virtualenv'i komut çalıştırmak için etkinleştirmek de kolaydır

pipenv shell

Yükleme gereksinimleri otomatik olarak güncellenir PipfilevePipfile.lock

pipenv install <package>

Güncel olmayan paketleri güncellemek de mümkündür

pipenv update

Özellikle benzer bir hissediyorum vardır bir arka plan geliyorsa kontrol etmenizi öneririz venpmpackage.jsonpackage-lock.json


22
Bunun, zaman içinde artık ihtiyaç duyulmayacak bağımlılık bağımlılıklarını da koruyacağını unutmayın, çünkü bağımlılık onun kullanımını düşürmüştür.
Patrick Bassut

Bu, orijinal sorunun üretime karşı yerel kalkınma için farklı bağımlılıklara sahip olmanıza izin veren --save-dev yönünü ele almıyor gibi görünüyor. Pipenv ile bunu nasıl başarabilirsiniz?
jeznag

1
@jeznag pipenvbir belirlemenizi sağlar dev-packagessenin içinde Pipfileve / veya kullanım --dev(veya -dkomut satırından). ör.pipenv install --dev nose2
Ewan

40

Bu basit çizgi bir başlangıç ​​noktasıdır. PAKETİ satırda tekrar kullanmak için kolayca bir bash komutu oluşturabilirsiniz.

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

Basit bash işlevi örneği için @devsnd'a teşekkürler:

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

Kullanmak için şunu çalıştırın:

pip-install-save some-package

Beş P=Flask pip install $P && pip freeze | grep $P >> requirements.txt
sentim

4

Ben gerçek sarar piton paketi oluşturduk pipdenilen pipm . Tüm pipkomutlar olduğu gibi çalışacak, ayrıca gereksinimler dosyasına yansıtılacaktır. Aksine pip-save(benzer bir araç buldum ve kullanım mümkün değildi) o (vb testi, dev, üretim,) birçok dosya ve ortamları işleyebilir. Ayrıca bağımlılıklarınızın tümünü / herhangi birini yükseltme komutuna sahiptir.

Kurulum

pipm install pkg-name

geliştirme bağımlılığı olarak kurulum

pipm install pkg-name --dev

test bağımlılığı olarak kurulum

pipm install pkg-name --test

uzaklaştırma

pipm uninstall pkg-name

tüm bağımlılıklarını güncelle

pipm update

tüm bağımlılıklarınızı gereksinimler dosyasından yükleyin

pipm install

geliştirme bağımlılıkları dahil

pipm install --dev


3

Güncelleme: görünüşe göre, pipenv resmi olarak Python koruyucular tarafından onaylanmamıştır ve önceden bağlanmış sayfa farklı bir kuruluşa aittir. Aracın artıları ve eksileri var, ancak aşağıdaki çözüm hala OP'nin aradığı sonucu elde ediyor.

pipenv , sorduğunuz şeyi saran pipve diğer şeyleri sağlayan bir bağımlılık yönetim aracıdır :

https://pipenv.kennethreitz.org/en/latest/#example-pipenv-workflow

$ pipenv install <package>

Bu, yoksa bir Pipfile oluşturur. Varsa, sağladığınız yeni paketle otomatik olarak düzenlenir.

A Pipfile, doğrudan bir eşdeğerdir package.json, buna Pipfile.lockkarşılık gelir package-lock.json.



1

Eğer yapabilirsiniz elle bir Makefile (veya bir metin dosyasına ve sonra Makefiledaki ithal) kaydedin:


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

ve sonra sadece koş make install


Bu yaklaşıma tamamen katılıyorum.
eleijonmarck

1

Bir paket yüklemek ve sürümünü kaydetmek için bu küçük komut satırını kullanıyorum requirements.txt: pkg=package && pip install $pkg && echo $(pip freeze | grep -i $pkg) >> requirements.txt


0

Bunu yapmak için bir kabuk işlevi yapmaya ne dersiniz? Aşağıdaki kodu ~/.profileveya~/.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
}

sonra çalıştırın source ~/.profileveya source ~/.bashrcmevcut terminalinize aktarmak için

bir paketi kurmak ve kaydetmek istediğinizde, örneğin çalıştırın pips requests. paket kurulduktan sonra, sürümü requirements.txtgeçerli dizininize kaydedilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.