Bagaimana cara memperbarui / meningkatkan paket menggunakan pip?

171

Apa cara memperbarui paket menggunakan pip? itu tidak bekerja:

pip update
pip upgrade

Saya tahu ini adalah pertanyaan sederhana tetapi diperlukan karena tidak begitu mudah ditemukan ( dokumentasi pip tidak muncul dan pertanyaan lain dari stack overflow relevan tetapi tidak persis tentang itu)

borgr
sumber

Jawaban:

280

Jalannya adalah

sudo pip install [package_name] --upgrade

atau singkatnya

sudo pip install [package_name] -U

sudo akan meminta untuk memasukkan kata sandi root Anda untuk mengkonfirmasi tindakan.

Jika Anda tidak memiliki kata sandi root (jika Anda bukan admin), Anda mungkin harus bekerja dengan virtualenv dan kemudian Anda harus menghapus sudo:

pip install [package_name] --upgrade
borgr
sumber
2
Seperti pip install --helpkata: -U, --upgrade Upgrade all specified packages to the newest available version.. Jadi itu harus menjadi huruf besar -U, bukan -u.
Peter Liang
25
Mengapa opsi umum seperti itu tidak ditampilkan ketika Anda melakukannya pip --helpadalah teka-teki bagi saya ...
Husky
3
@ Husky - Ya, di sepanjang baris yang sama, mengapa mereka tidak hanya membuat upgradeperintah yang melakukan apa yang Anda lihat sebagai jawaban adalah pertanyaan yang bagus. (Artinya, jika Anda menggunakan 'upgrade' itu install+ --upgradelakukan saja + .) An 'alias' macam.
bshea
10

Untuk paket non-spesifik dan solusi yang lebih umum Anda dapat memeriksa pip-review , alat yang memeriksa paket apa yang bisa / harus diperbarui.

$ pip-review --interactive
requests==0.14.0 is available (you have 0.13.2)
Upgrade now? [Y]es, [N]o, [A]ll, [Q]uit y
seolah-olah
sumber
3
Meskipun ini tidak menjawab pertanyaan secara langsung, mungkin beberapa orang benar-benar mencari ketika mereka mencari pesan ini.
borgr
8

skrip dr untuk memperbarui semua paket yang diinstal

Jika Anda hanya ingin meningkatkan satu paket, lihat jawaban @ borgr . Saya sering merasa perlu, atau paling tidak menyenangkan, untuk memutakhirkan semua paket saya sekaligus. Saat ini, pip tidak secara alami mendukung tindakan itu, tetapi dengan skrip sh itu cukup sederhana. Anda menggunakan pip list, awk(atau cutdan tail), dan memerintahkan substitusi. Satu-liner normal saya adalah:

for i in $(pip list -o | awk 'NR > 2 {print $1}'); do sudo pip install -U $i; done

Ini akan meminta kata sandi root. Jika Anda tidak memiliki akses ke sana, --useropsi pipatau virtualenv mungkin sesuatu untuk dilihat.

Aiden Woodruff
sumber
7
import subprocess as sbp
import pip
pkgs = eval(str(sbp.run("pip3 list -o --format=json", shell=True,
                         stdout=sbp.PIPE).stdout, encoding='utf-8'))
for pkg in pkgs:
    sbp.run("pip3 install --upgrade " + pkg['name'], shell=True)

Simpan sebagai xx.py
Kemudian jalankan Python3 xx.py
Lingkungan: python3.5 + pip10.0 +

Fofdsf
sumber
Saya suka solusi ini. Saya telah menambahkan cetakan untuk menunjukkan nama paket selama pembaruan:print('updating ', pkg['name'])
pvoj
4

Untuk memutakhirkan pip untuk Python3.4 +, Anda harus menggunakan pip3 sebagai berikut:

sudo pip3 install pip --upgrade

Ini akan memutakhirkan pip yang terletak di: /usr/local/lib/python3.X/dist-packages

Jika tidak, untuk memutakhirkan pip untuk Python2.7, Anda akan menggunakan pip sebagai berikut:

sudo pip install pip --upgrade

Ini akan memutakhirkan pip yang terletak di: /usr/local/lib/python2.7/dist-packages

Nick D
sumber
7
Ini bukan yang diminta OP. Dia bertanya bagaimana meningkatkan paket tertentu, bukan PIP itu sendiri.
Dipuji
Meskipun demikian, sepertinya ada
gunanya