සියලුම පයිතන් පැකේජ පයිප්ප සමඟ යාවත්කාලීන කරන්නේ කෙසේද?


2066

සියලුම පයිතන් පැකේජ එකවර යාවත්කාලීන කළ pipහැකිද?

සටහන : නිල නිකුතුවේ මේ සඳහා විශේෂාංග ඉල්ලීමක් ඇති බව.


37
මෘදුකාංග කුණුවීමෙන් පරිස්සම් වන්න යැපීම් වැඩි දියුණු කිරීම ඔබගේ යෙදුම බිඳ දැමිය හැකිය. ස්ථාපනය කර ඇති සියලුම පැකේජ වල නිශ්චිත අනුවාදය ඔබට pip freeze(වැනි bundle installහෝ npm shrinkwrap) සමඟ ලැයිස්තු ගත කළ හැකිය . ටින්කර් කිරීමට පෙර එහි පිටපතක් ඉතිරි කිරීම වඩාත් සුදුසුය.
කර්නල් භීතිකාව

මෙය සිදු කිරීමේදී පරෙස්සම් වන්න pip, ඔබ උත්ශ්‍රේණිගත කිරීමේදී ඔබේ ස්ථාපනය ඉස්කුරුප්පු requestsකරයි. දෝෂ පණිවිඩය cannot import name IncompleteRead.
පෝල් රූනි

11
මම පිළිතුරු පොකුරක් උත්සාහ කළ අතර නව (ඒ නිසා අඩු ලකුණු පිළිතුරක්) වඩා හොඳ ප්‍රතිදානයක් ලබා දෙයි: stackoverflow.com/questions/2720014/…
FauChristian

යාවත්කාලීන විශේෂාංග ඉල්ලීම සහ සාකච්ඡාව: github.com/pypa/pip/issues/4551
cledoux

මෙම ප්‍රශ්නය එතරම් පැරණි හා ඉතා ප්‍රයෝජනවත් ය, මට අවශ්‍ය වන්නේ මෙතැන් සිට පැමිණෙන ඕනෑම කෙනෙකුට අනතුරු ඇඟවීමට ය. මේ සියල්ල කිරීමට නව නිල හොඳම ක්‍රමයක් දැන් තිබේ: පයිපෙන්ව්. ලියකියවිලි මෙහි ඇත: docs.pipenv.org/basics සහ කර්තෘගේ Pycon 2018 ඒ ගැන කතා කිරීම මෙහි ඇත: youtube.com/watch?v=GBQAKldqgZs . සුබ කේතීකරණයක්!
මලික් ඒ. රූමි

Answers:


2277

තවම සාදන ලද ධජයක් නොමැත, නමුත් ඔබට භාවිතා කළ හැකිය

pip list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1  | xargs -n1 pip install -U

සටහන: මේ සඳහා අසීමිත විභව වෙනස්කම් ඇත. මම මෙම පිළිතුර කෙටි හා සරල ලෙස තබා ගැනීමට උත්සාහ කරමි, නමුත් කරුණාකර අදහස් දැක්වීමේ වෙනස්කම් යෝජනා කරන්න!

පැරණි අනුවාදයේ pip, ඔබට ඒ වෙනුවට මෙය භාවිතා කළ හැකිය:

pip freeze --local | grep -v '^\-e' | cut -d = -f 1  | xargs -n1 pip install -U

මෙම grep@jawache යෝජනා කරන පරිදි, සංස්කරණය කළ ( "-e") පැකේජය අර්ථ දැක්වීම් මඟ වේ. (ඔව්, ඔයා වෙනුවට හැකි grep+ cutසමඟ sedහෝ awkහෝ perlහෝ ...).

මෙම -n1සඳහා ධජය xargsඑක් පැකේජය යාවත්කාලීන කිරීම නම් කිරීම වළක්වා සියල්ල රඳවා තබා (ස්තුති අසමත් @andsens ).


60
දකුණ :( ගැටලුව දැන් ජීවත් වන්නේ github.com/pypa/pip/issues/59 හි . නමුත් සෑම යෝජනාවකටම "ඔව්, නමුත් X යනු Y කිරීමට සුදුසුම ක්‍රමයදැයි මට විශ්වාසයි" යනුවෙන් පිළිතුරු සපයයි. දැන් කිසි විටෙකත් වඩා හොඳද? ප්‍රායෝගිකත්වය පාරිශුද්ධභාවයට පහර දෙයිද? :(
rbp

20
එය සාමාන්‍ය පැකේජ කළමණාකරුවෙකු සමඟ ස්ථාපනය කර ඇති පැකේජ මුද්‍රණය කරයි (apt-get හෝ Synaptic වැනි). මම මෙය ක්‍රියාත්මක කළහොත් pip install -U, එය සියලු පැකේජ යාවත්කාලීන කරනු ඇත. එය apt-get සමඟ යම් ගැටුමක් ඇති කළ හැකි යැයි මම බිය වෙමි.
ජබ්බා

8
Grep ලෙස වෙනස් කරන්නේ කෙසේද: egrep -v '^ (\ - e | #)' (උබුන්ටු 12.10 හි එය ක්‍රියාත්මක කරන විට මට මෙම රේඛාව ලැබේ: "## FIXME: මෙම පැකේජය සඳහා යැපුම්_ සම්බන්ධතා වල svn URL සොයාගත නොහැකි විය:".
LasseValentini

32
teeසත්‍ය උත්ශ්‍රේණිගත කිරීමට පෙර මම කලින් විසි කරමි, එවිට ඔබට මුල් වෙරිසන් ලැයිස්තුවක් ලබා ගත හැකිය. උදා: pip freeze --local | tee before_upgrade.txt | ...ඒ ආකාරයෙන් යම් ගැටළුවක් ඇත්නම් ආපසු හැරවීම පහසු වනු ඇත.
එමිල් එච්

10
මම එකතු -Hකිරීමට sudo: ක කරදර කාරී දෝෂ වළක්වා ගැනීමට $ pip freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 sudo -H pip install -U
මාරියෝ එස්

686

ඔබට පහත පයිතන් කේතය භාවිතා කළ හැකිය. මෙන් නොව pip freeze, මෙය අනතුරු ඇඟවීම් සහ FIXME දෝෂ මුද්‍රණය නොකරනු ඇත. පයිප්ප සඳහා <10.0.1

import pip
from subprocess import call

packages = [dist.project_name for dist in pip.get_installed_distributions()]
call("pip install --upgrade " + ' '.join(packages), shell=True)

පයිප්ප සඳහා> = 10.0.1

import pkg_resources
from subprocess import call

packages = [dist.project_name for dist in pkg_resources.working_set]
call("pip install --upgrade " + ' '.join(packages), shell=True)

21
මෙම පුදුම සහගත හොඳින් ක්රියා ... කාර්ය සාධක ඇත්තටම ගනී විට එය සෑම විටම එසේ තෘප්තිමත් වෙනවා දීර්ඝ කාලයක් ... සහ ඔබ ලබා දෙන පොකුරක් නව දේවල්! PS: ඔබ OS X හි සිටී නම් එය root ලෙස ධාවනය කරන්න!
ඇලෙක්ස් ග්‍රේ

52
උප ක්‍රියාවලියක් ඇමතීමෙන් තොරව පයිප්ප භාවිතයෙන් ස්ථාපනය කිරීමට ක්‍රමයක් නැද්ද? මොන වගේද import pip pip.install('packagename')?
එන්ඩොලිත්

6
මම මෙය fabfile.py වලින් ඔතා . ස්තූතියි!
ජොෂ් කේ

5
En බෙන්මෙස්ගර්: ඔබ ඇත්ත වශයෙන්ම ඔබේ වර්චුවලෙන්ව් හි පද්ධති පැකේජ භාවිතා නොකළ යුතුය. ඔබ ඇත්ත වශයෙන්ම root ලෙස විශ්වාසදායක, ප්‍රසිද්ධ වැඩසටහන් අතළොස්සකට වඩා ධාවනය නොකළ යුතුය. --No-site-packages (මෑත සංස්කරණ වල පෙරනිමිය) සමඟ ඔබේ virtualenvs ධාවනය කරන්න.
jeffcook2150

3
පැකේජයක් තවදුරටත් සොයාගත නොහැකි නම්, තෝරාගත් පිළිතුර (ඉහළ) අසමත් වේ. මෙම ස්ක්‍රිප්ට් එක ඊළඟ පැකේජ දක්වාම ඉදිරියට යයි, අපූරුය.
ජොෂ්

650

සියලුම දේශීය පැකේජ යාවත්කාලීන කිරීමට; ඔබට භාවිතා කළ හැකිය pip-review:

$ pip install pip-review
$ pip-review --local --interactive

pip-reviewයනු දෙබලකි pip-tools. Nedknedlsepp විසින් සඳහන් කළ pip-toolsනිකුතුව බලන්න . පැකේජය ක්‍රියා කරන නමුත් පැකේජය තවදුරටත් ක්‍රියාත්මක නොවේ.pip-reviewpip-tools

pip-review0.5 අනුවාදයේ සිට වින්ඩෝස් මත ක්‍රියා කරයි .


2
@ හවුසර්: එය පයිතන් 3 සඳහා සහය නොදක්වයි. එය දෝෂයක් විය හැකි
jfs

7
kmkoistinen එය හොඳ මෙවලමක් වන නමුත් එය PIP සමඟ ඒකාබද්ධ වන තුරු එයින් අදහස් කරන්නේ සෑම කෙනෙකුම කිරීමට අකමැති අතිරේක යමක් ස්ථාපනය කිරීමයි.
වර්නයිට්

2
An ඩැනියෙල්: නල-මෙවලම් තවදුරටත් ක්‍රියා නොකරයි, නල සමාලෝචනය (නල මෙවලම් දෙබලක) ක්‍රියා කරයි.
jfs

7
නල සමාලෝචනය ඉතා හොඳින් ක්‍රියාත්මක වේ (අවම වශයෙන් පයිතන් අනුවාදය 3.5.0 සඳහා)
ෆ්‍රෙඩ්රික් හෙඩ්මන්

16
අන්තර්ක්‍රියාකාරී මාදිලියකින් තොරව සියල්ල යාවත්කාලීන කිරීමට:pip-review --local --auto
Dlamini

337

වින්ඩෝස් මත ක්රියා කරයි. අනිත් අයටත් හොඳ විය යුතුයි. (command යනු විධාන විමසුමේදී ඔබ සිටින ඕනෑම නාමාවලියකි. උදා: සී: / පරිශීලකයින් / පරිශීලක නාමය>)

කරන්න

$ pip freeze > requirements.txt

පෙළ ගොනුව විවෘත කරන්න, ==සමඟ ප්‍රතිස්ථාපනය කර >=ක්‍රියාත්මක කරන්න

$ pip install -r requirements.txt --upgrade

කිසියම් පැකේජයක් උත්ශ්‍රේණි කිරීම නවතා දැමීමේ ගැටලුවක් ඔබට තිබේ නම් (සමහර විට අංකිතයි), ඩිරෙක්ටරියට ($) ගොස් නම සඳහන් කරන්න (ඊට පෙර # එකතු කරන්න) සහ යාවත්කාලීන කිරීම නැවත ක්‍රියාත්මක කරන්න. ඔබට පසුව එම කොටස නැවත සම්බන්ධ කළ හැකිය. පයිතන් ගෝලීය පරිසරය පිටපත් කිරීම සඳහා ද මෙය විශිෂ්ටයි.


වෙනත් ක්රමයක්:

නල සමාලෝචන ක්‍රමයටද මම කැමතියි:

py2
$ pip install pip-review

$ pip-review --local --interactive

py3
$ pip3 install pip-review

$ py -3 -m pip_review --local --interactive

සියලුම පැකේජ යාවත්කාලීන කිරීමට ඔබට 'a' තෝරාගත හැකිය; එක් උත්ශ්‍රේණි කිරීමක් අසමත් වුවහොත්, එය නැවත ක්‍රියාත්මක කරන්න, එය ඊළඟ එකෙහි දිගටම පවතී.


29
ඔබ ඉවත් කළ යුතුය requirements.txtගේ =={version}. උදාහරණයක් ලෙස: python-dateutil==2.4.2කිරීමට python-dateutilසියලු මාර්ග සඳහා.
යංමින්ස්

4
මෙය ඇත්ත වශයෙන්ම මැකෝස් හි පැකේජ යාවත්කාලීන නොකරන බව මට පෙනී ගියේය.
jkooker

10
මෙය නිවැරදි කිරීම සඳහා 'පයිප් ඉන්ස්ටෝල් ...' ධාවනය කිරීමට පෙර ඔබේ සංස්කාරකයේ / අයිඩියේ ඇති 'සියල්ල ප්‍රතිස්ථාපනය කරන්න' == ">"> = "ඉක්මන් නිර්දේශ කරමි
අමරි ලයිට්

7
linux සඳහා: $ pip freeze | cut -d '=' -f1> requirements.txtඅනුවාදය ඉවත් කිරීම සඳහා
Cavaz

1
ඔබ භාවිතා කරන කවචය කඩිනම් නම්, ඔබට එය command pip3 install -r <(pip3 freeze) --upgrade<(pip3 freeze)
ලදායී

131

පයිප්ප්ග්‍රේඩ් භාවිතා කරන්න !

$ pip install pipupgrade
$ pipupgrade --verbose --latest --yes

ගොනුවකින් ඔබේ පද්ධතිය, දේශීය හෝ පැකේජ යාවත්කාලීන කිරීමට පයිප්ග්‍රේඩ් ඔබට උදව් කරයි requirements.txt! එය වෙනස් නොවන පැකේජ තෝරා බේරා වැඩි දියුණු කරයි. බහු පයිතන් පරිසරයන් තුළ ඇති පැකේජ යාවත්කාලීන කිරීමට ද පයිප්ග්‍රේඩ් සහතික කරයි. Python2.7 +, Python3.4 + සහ pip9 +, pip10 +, pip18 +, pip19 + සමඟ අනුකූල වේ.

රූප විස්තරය මෙහි ඇතුළත් කරන්න

සටහන: මම මෙවලමෙහි කර්තෘ වෙමි.


1
මෙම ක්‍රමයට @ rbp ගේ පිළිතුරට වඩා පිරිසිදු ප්‍රතිදානයක් ඇත
Gaia

7
හොඳ අදහසක්, නමුත් Checking...මම එය උත්සාහ කළ විට එය සදහටම හිර වී ඇත .
CGFoX

1
එය ස්ථාපනය කර පරීක්ෂා කිරීමේදී ද හිර වී ඇත[0;93mChecking...[0m
ක්‍රිස්

1
පිටුවේ ගැටලුවක් විවෘත කිරීමට athanathhandrake සැලකිලිමත්ද?
අචිලස් ගැස්පර් රස්කින්හා

2
වින්ඩෝස් 10 සහ පයිතන් 3.7.5 හි දෝෂයක් ඇතිවිය:ModuleNotFoundError: No module named 'ctypes.windll'
ක්වින් හෙයැන්ග්

129

විශිෂ්ට උපදේශන පසු Windows අනුවාදය ප්රලේඛනය සඳහා FORWoude ඩර් රොබ් වෑන් රථයකින්

for /F "delims===" %i in ('pip freeze -l') do pip install -U %i

20
for /F "delims= " %i in ('pip list --outdated') do pip install -U %i ඉක්මන් බැවින් එය "යල් පැන ගිය" පැකේජ පමණක් උත්සාහ කර යාවත්කාලීන කරනු ඇත
Refael Ackermann

3
EfRefaelAckermann මෙය මුල් පිටපතට වඩා මන්දගාමී වනු ඇතැයි මම සැක කරමි :) යල්පැනගිය පැකේජ මොනවාදැයි දැන ගැනීමට පළමුව එක් එක් පැකේජයේ නවතම අනුවාදය කුමක්දැයි පරීක්ෂා කළ යුතුය. එය යාවත්කාලීන කිරීමේදී පළමු පියවරට සමාන වන අතර නව අනුවාදයක් නොමැති නම් ඉදිරියට නොයනු ඇත. කෙසේ වෙතත් ඔබේ අනුවාද පයිප්පයේ දෙවරක් අනුවාදයන් පරික්ෂා කරනු ඇත, යල් පැන ගිය පැකේජ ලැයිස්තුවක් ස්ථාපිත කළ පළමු අවස්ථාව සහ මෙම ලැයිස්තුවේ පැකේජ යාවත්කාලීන කිරීමේදී දෙවන වරට.
පියොටර් ඩොබ්‍රොගොස්ට්

2
EfRefaelAckermann ජාලය හරහා පැකේජයක අනුවාදය පිරික්සීමට වඩා වේගවත් අනුපිළිවෙලක් වන අතර එමඟින් චෙක්පත් ගණන ප්‍රශස්තිකරණය කළ යුතු අතර එය භ්‍රමණය වන වාර ගණන නොවේ. පතල n චෙක්පත් කරයි, ඔබේ n + m චෙක්පත් කරයි.
පියොටර් ඩොබ්‍රොගොස්ට්

2
+1 - එය 6.20.2019, මම වින්ඩෝස් 10 හි පයිතන් 3.7.3 භාවිතා කරමි, මගේ සියලුම දේශීය පැකේජ යාවත්කාලීන කිරීමට මෙය හොඳම ක්‍රමයයි.
මැක්ටාලි

1
ප්‍රතිදානයේ පළමු පේළි දෙක මඟ හැරිය යුතුය : for /F "skip=2 delims= " %i in ('pip list --outdated') do pip install --upgrade %i. මෙය කණ්ඩායම් ගොනුවකින් ක්‍රියාත්මක වන්නේ නම්, ඒ %%iවෙනුවට භාවිතා කිරීමට වග බලා ගන්න %i. pipමෙම විධානය භාවිතයෙන් ක්‍රියාත්මක කිරීමට පෙර යාවත්කාලීන කිරීම වඩා පිරිසිදු බව සලකන්න python -m pip install --upgrade pip.
ඇන්ඩි

75

මෙම විකල්පය මට වඩා සරල හා කියවිය හැකි බව පෙනේ:

pip install -U `pip list --outdated | awk 'NR>2 {print $1}'`

පැහැදිලි කිරීම නම් pip list --outdatedයල්පැනගිය පැකේජ ලැයිස්තුවක් මෙම ආකෘතියෙන් ප්‍රතිදානය කරයි:

Package   Version Latest Type 
--------- ------- ------ -----
fonttools 3.31.0  3.32.0 wheel
urllib3   1.24    1.24.1 wheel
requests  2.20.0  2.20.1 wheel

අමුතු විධානය තුළ, NR>2පළමු වාර්තා දෙක (රේඛා) මඟ හැර {print $1}, එක් එක් පේළියේ පළමු වචනය තෝරා ගනී (සර්ජියෝ අරාජෝ විසින් යෝජනා කළ පරිදි, මම ඉවත් කළ වාර්තා හැසිරවිය හැකි tail -n +3බැවින් මම ඉවත් කළෙමි awk).


එක් යාවත්කාලීන කිරීමක් අසමත් වුවහොත්, වැඩි දියුණු කිරීම් කිසිවක් සිදු නොවේ.
බොරිස්

2
ඔබට වලිගය awk 'NR>2 {print $1}'මඟින් ප්‍රතිදානය පිරිසිදු කිරීමෙන් වළක්වා ගත හැකිය
SergioAraujo

ErSergioAraujo, මෙමඟින් විසඳුම පිරිසිදුව පෙනේ, ඉඟියට ස්තූතියි!
මාක්

74

යල් පැන ගිය ඇසුරුම් ඔබට මුද්‍රණය කළ හැකිය

pip freeze | cut -d = -f 1 | xargs -n 1 pip search | grep -B2 'LATEST:'

14
Virtualenv එකක, මම මේ වගේ දෙයක් කරනවා:pip freeze --local | cut -d = -f 1 | xargs -n 1 pip search | grep -B2 'LATEST:'
ජෙරමි බ්ලැන්චාර්ඩ්

වර්තමානයේ ඔබට එය කළ හැකිය python -m pip list outdated(එය අවශ්‍යතා ආකෘතියේ නොමැති වුවද).
ජැක්ටෝස්

67

පහත දැක්වෙන එක්-ලයිනර් උදව් බව ඔප්පු කළ හැකිය:

(පයිප්> 20.0)

pip list --format freeze --outdated | sed 's/=.*//g' | xargs -n1 pip install -U

පැරණි අනුවාද:

pip list --format freeze --outdated | sed 's/(.*//g' | xargs -n1 pip install -U

xargs -n1 දෝෂයක් සිදුවුවහොත් දිගටම කරගෙන යයි.

අතහැර දමා ඇති දේ සහ දෝෂයක් මතු කරන්නේ කුමක් ද යන්න පිළිබඳව ඔබට තවත් “සිහින් ධාන්ය” පාලනයක් අවශ්‍ය නම්, -n1ධජය එක් නොකළ යුතු අතර නොසලකා හැරිය යුතු දෝෂ පැහැදිලිව නිර්වචනය කළ යුතුය .

| sed 's/^<First characters of the error>.*//'

වැඩ කරන උදාහරණයක් මෙන්න:

pip list --format freeze --outdated | sed 's/=.*//g' | sed 's/^<First characters of the first error>.*//' | sed 's/^<First characters of the second error>.*//' | xargs pip install -U

'කැඩ්' සහ 'සමහර' වලින් ආරම්භ වන පේළි සඳහා පෙරහන් එක් කිරීමට සිදුවිය. පෙනෙන ආකාරයට නල stdout වෙත අනතුරු ඇඟවීම් යවයි :(
චිප් කැම්ඩන්

හරි, මෙය සාධාරණයි: ඔබට | sed 's/^<First characters of the error>.*//'අවශ්‍ය තරම් ප්‍රමාණයක් එකතු කළ හැකිය . ඔබට ස්තුතියි!
raratiru

14
හෝ:pip list --outdated | cut -d ' ' -f 1 | xargs -n 1 pip install --upgrade
ජෙන්ස්

52

වඩාත් ශක්තිමත් විසඳුම

Pip3 සඳහා මෙය භාවිතා කරන්න:

pip3 freeze --local |sed -rn 's/^([^=# \t\\][^ \t=]*)=.*/echo; echo Processing \1 ...; pip3 install -U \1/p' |sh

පයිප්ප සඳහා, 3s ඉවත් කරන්න:

pip freeze --local |sed -rn 's/^([^=# \t\\][^ \t=]*)=.*/echo; echo Processing \1 ...; pip install -U \1/p' |sh

OSX ඔඩිටි

OSX, 2017 ජූලි වන විට, ඉතා පැරණි අනුවාදයක් සහිත නැව් (අවුරුදු දුසිමක්). දීර් regular නිත්‍ය ප්‍රකාශන ලබා ගැනීම සඳහා, ඉහත විසඳුමේ -r වෙනුවට -E භාවිතා කරන්න.

ජනප්‍රිය විසඳුම් සමඟ ගැටළු විසඳීම

මෙම විසඳුම හොඳින් සැලසුම් කර 1 පරීක්‍ෂා කර ඇති අතර වඩාත් ජනප්‍රිය විසඳුම් සමඟ පවා ගැටලු ඇත.

  • පයිප් විධාන රේඛා විශේෂාංග වෙනස් කිරීම නිසා අතේ ගෙන යා හැකි ගැටළු
  • පොදු නල හෝ පයිප් 3 ළමා ක්‍රියාවලිය අසාර්ථක වන නිසා xargs බිඳ වැටීම
  • අමු xargs නිමැවුමෙන් ජනාකීර්ණ ලොග් වීම
  • පයිතන්-සිට-ඕඑස් පාලම මත යැපීම, එය වැඩිදියුණු කළ හැකි 3

ඉහත විධානය මඟින් මෙම ගැටළු මුළුමනින්ම ජය ගැනීම සඳහා sed සහ sh සමඟ ඒකාබද්ධව සරලම හා වඩාත්ම අතේ ගෙන යා හැකි පයිප් සින්ටැක්ස් භාවිතා කරයි. Sed ක්‍රියාකාරිත්වය පිළිබඳ විස්තර 2 වන අනුවාදය සමඟ සෝදිසි කර බැලිය හැකිය .


විස්තර

[1] ලිනක්ස් 4.8.16-200.fc24.x86_64 පොකුරක් තුළ පරීක්ෂා කර නිතිපතා භාවිතා කරන අතර තවත් ලිනක්ස් / යුනික්ස් රස පහක් මත පරීක්ෂා කර ඇත. එය වින්ඩෝස් 10 හි ස්ථාපනය කර ඇති සිග්වින් 64 මත ද ක්‍රියාත්මක වේ. IOS මත පරීක්ෂණ අවශ්‍ය වේ.

[2] විධානයෙහි ව්‍යුහ විද්‍යාව වඩාත් පැහැදිලිව දැකීමට නම්, ඉහත දැක්වෙන pip3 විධානයට අදහස් දැක්වීම් සමඟ හරියටම සමාන වේ:

# match lines from pip's local package list output
# that meet the following three criteria and pass the
# package name to the replacement string in group 1.
# (a) Do not start with invalid characters
# (b) Follow the rule of no white space in the package names
# (c) Immediately follow the package name with an equal sign
sed="s/^([^=# \t\\][^ \t=]*)=.*"

# separate the output of package upgrades with a blank line
sed="$sed/echo"

# indicate what package is being processed
sed="$sed; echo Processing \1 ..."

# perform the upgrade using just the valid package name
sed="$sed; pip3 install -U \1"

# output the commands
sed="$sed/p"

# stream edit the list as above
# and pass the commands to a shell
pip3 freeze --local |sed -rn "$sed" |sh

[3] පයිතන් හෝ පීඅයිපී සංරචකයක් උත්ශ්‍රේණිගත කිරීමේදී භාවිතා කරන පයිතන් හෝ පීඅයිපී සංරචකයක් යාවත්කාලීන කිරීම අක්‍රීය හෝ පැකේජ දත්ත සමුදා දූෂණයට විභව හේතුවක් විය හැකිය.


2
sedOS X හි ජුරාසික් BSD මඟහරවා ගත හැකි තවත් ක්‍රමයක් වන්නේ gsedඒ වෙනුවට (GNU sed) භාවිතා කිරීමයි. එය ලබා ගැනීම සඳහා,brew install gnu-sed
වෝල්ටර් ට්‍රොස්

Al වෝල්ටර්ට්‍රොස් ... ජුරාසික් ... හොඳ නාම පද භාවිතය. එබැවින් අපට දැන් පර්යන්තයේ හොඳ විගණන මාර්ගයක් සහිත යාවත්කාලීන නල පැකේජ කණ්ඩායම් කිරීමට ක්‍රම දෙකක් තිබේ. (1) පිළිතුරෙහි මෙන් -E විකල්පය භාවිතා කරන්න සහ (2) ජුරාසික් කාලයෙන් ඉවත් වීමට gsed ස්ථාපනය කරන්න.
ඩග්ලස් ඩසීකෝ

41

මෙය වඩාත් සංක්ෂිප්ත ලෙස පෙනේ.

pip list --outdated | cut -d ' ' -f1 | xargs -n1 pip install -U

පැහැදිලි කිරීම:

pip list --outdated මේ වගේ රේඛා ලැබෙනවා

urllib3 (1.7.1) - Latest: 1.15.1 [wheel]
wheel (0.24.0) - Latest: 0.29.0 [wheel]

දී cut -d ' ' -f1, -d ' '"අවකාශය" පරිසීමකය ලෙස සකසයි, -f1එයින් අදහස් කරන්නේ පළමු තීරුව ලබා ගැනීමයි.

එබැවින් ඉහත රේඛා බවට පත්වන්නේ:

urllib3
wheel

ඉන්පසු එක් එක් පේළිය එකතු කරන තර්ක ලෙස xargsවිධානය ක්‍රියාත්මක කිරීමට ඒවා යොමු කරන්නpip install -U

-n1සෑම විධානයකටම pip install -Uලබා දෙන තර්ක ගණන 1 ලෙස සීමා කරයි


මට මෙම අනතුරු ඇඟවීම ලැබුණිDEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
රෙමන්

2
@ රෙමන්: ඒ ඔබ Pip v9.0.1 භාවිතා කරන බැවිනි. මෙය ක්ෂය කිරීමේ පණිවිඩයක් පමණක් වන අතර එයින් අදහස් වන්නේ අනාගත Pip නිකුතුවක දී සමහර ක්‍රියාකාරීත්වයන් නොනැසී පවතින බවයි. සැලකිලිමත් වීමට කිසිවක් නැත;)
AlessioX

කෙසේ වෙතත්, මෙය අවසාන විසඳුම ලෙස සලකුණු කළ යුතුය. ඇත්ත වශයෙන්ම පිළිගත් පිළිතුර ඔබේ නල පැකේජ පුරා ක්‍රියාත්මක වන අතර, ඔබට පැකේජ 1 ක් හෝ 2 ක් පමණක් යාවත්කාලීන කිරීමට සිදුවුවහොත් එය කාලය නාස්තියකි. ඒ වෙනුවට, මෙම විසඳුම යල් පැන ගිය පැකේජ
පුරාම ක්‍රියාත්මක වේ

34

උත්ශ්‍රේණිගත කිරීමේදී මට එකම ගැටලුවක් තිබුණි. කාරණය නම්, මම කිසි විටෙකත් සියලු පැකේජ යාවත්කාලීන නොකරමි. මම යාවත්කාලීන කරන්නේ මට අවශ්‍ය දේ පමණි, මන්ද ව්‍යාපෘතිය බිඳ වැටිය හැකි බැවිනි.

පැකේජය අනුව පැකේජය උත්ශ්‍රේණිගත කිරීමට සහ අවශ්‍යතා. Txt ගොනුව යාවත්කාලීන කිරීමට පහසු ක්‍රමයක් නොතිබූ හෙයින්, මම මෙම නල-යාවත්කාලීන කරන්නා ලියා ඇති අතර එය තෝරාගත් පැකේජ සඳහා (හෝ සියලුම පැකේජ) ඔබේ requirements.txtගොනුවේ අනුවාද යාවත්කාලීන කරයි .

ස්ථාපනය

pip install pip-upgrader

භාවිතය

ඔබේ virtualenv සක්‍රිය කරන්න (වැදගත්, මන්ද එය නවීකරණය කරන ලද පැකේජ වල නව සංස්කරණ වත්මන් virtualenv හි ස්ථාපනය කරන බැවිනි).

cd ඔබේ ව්‍යාපෘති නාමාවලියට ඇතුළු වී ධාවනය කරන්න:

pip-upgrade

උසස් භාවිතය

අවශ්‍යතා සම්මත නොවන ස්ථානයක තබා තිබේ නම්, ඒවා තර්ක ලෙස යවන්න:

pip-upgrade path/to/requirements.txt

ඔබට යාවත්කාලීන කිරීමට අවශ්‍ය පැකේජය ඔබ දැනටමත් දන්නේ නම්, ඒවා තර්ක ලෙස යවන්න:

pip-upgrade -p django -p celery -p dateutil

ඔබට පූර්ව මුදාහැරීමේ / පශ්චාත්-මුදාහැරීමේ අනුවාදයට යාවත්කාලීන කිරීමට අවශ්‍ය නම්, --prereleaseඔබේ විධානයට තර්කය එක් කරන්න.

සම්පූර්ණ අනාවරණය: මම මෙම පැකේජය ලිව්වෙමි.


8
නල පෙරනිමියෙන් කළ යුත්තේ මෙයයි.
Nostalg.io

ඔබේ මෙවලම සමඟ ඉදිරියට යන්න සමහර චරිත ගැලවී යාම මගේ වින්ඩෝස් යන්ත්‍රයේ නිවැරදිව ක්‍රියා කරන බවක් නොපෙනේ. ඒ හැර එය හොඳයි
ලූක්

කවුළුවල එය සැබවින්ම අත්හදා බලා නැත, නමුත් මම අථත්‍ය යන්ත්‍රයක් ස්ථාපනය කරමි. ස්තූතියි
Simion Agavriloaei

virtualenvසක්‍රීය කර නොමැති නම්pip-upgrade --skip-virtualenv-check
මෝර්ස්

2
මෙය පොදු, dev සහ prod අවශ්‍යතා සහිත අවශ්‍යතා ෆෝල්ඩරයක් සමඟ ද ක්‍රියා කරයි. සරලවම නියමයි!
cwhisperer

28

Https://github.com/cakebread/yolk වෙතින් :

$ pip install -U `yolk -U | awk '{print $1}' | uniq`

කෙසේ වෙතත් ඔබ මුලින්ම කහ මදය ලබා ගත යුතුය:

$ sudo pip install -U yolk

1
අවුරුදු 7 කට පෙර අවසන් කැපවීම
බොරිස්

ක්‍රි.ව. 2013 දී
dotbit

27

@ රමණගේ පිළිතුරේ එක් ලයිනර් අනුවාදය .

python -c 'import pip, subprocess; [subprocess.call("pip install -U " + d.project_name, shell=1) for d in pip.get_installed_distributions()]'

`


4
subprocess.call ("sudo pip install ... ඔබට අවසර අවශ්‍ය නම්
මැක්සිමිලියානෝ රියෝස්

4
AMaximilianoRios කරුණාකර ඒ වෙනුවට අතථ්‍ය envsudo pip install එකක් භාවිතා නොකරන්න .
බෙන්ට්

22

virtualenv භාවිතා කරන විට සහ ඔබේ virtualenv වෙත එකතු කරන ලද පැකේජ යාවත්කාලීන කිරීමට ඔබට අවශ්‍ය නම්, ඔබට එය කිරීමට අවශ්‍ය විය හැකිය:

pip install `pip freeze -l | cut --fields=1 -d = -` --upgrade

19

වින්ඩෝස් පවර්ෂෙල් විසඳුම

pip freeze | %{$_.split('==')[0]} | %{pip install --upgrade $_}

pip list --outdated | %{$_.split('==')[0]} | %{pip install --upgrade $_}?
ෆෝඩ්

2
සමහර විට pip list --outdated --format freeze | %{$_.split('==')[0]} | %{pip install --upgrade $_}වඩාත් සුදුසු වනු ඇත.
brainplot

19

නල නිකුත් කිරීමේ සාකච්ඡාවේදී මා සොයාගත් සරලම හා වේගවත්ම විසඳුම නම්:

pip install pipdate
pipdate

මුලාශ්‍රය: https://github.com/pypa/pip/issues/3819


2
සුලු විෂමතාවයක් ඇතිවීමෙන් වෙනත් විසඳුම් ඇණ හිට ඇති අතර, මෙම විසඳුම අනතුරු ඇඟවූ අතර අනෙක් පැකේජ සමඟ ඉදිරියට යාම සඳහා ගැටළුව මඟ හැරියේය. මහා!
සර්ජ් ස්ට්‍රෝබෑන්ඩ්

16

අමුතු යාවත්කාලීන පැකේජ භාවිතා කරන්න: pip install -U $(pip freeze | awk -F'[=]' '{print $1}')

වින්ඩෝස් පවර්ෂෙල් යාවත්කාලීන කිරීම foreach($p in $(pip freeze)){ pip install -U $p.Split("=")[0]}


පයිප්ප කැටි කිරීම | awk -F '[=]' '{මුද්‍රණය $ 1}' | xargs
pip

පයිතන් 3 සඳහා ... pip3 install -U $ (pip3 freeze | awk -F '[=]' '{print $ 1}')
ජිමී එම්ජී ලිම්

12

ඔබට මෙය උත්සාහ කළ හැකිය:

for i in ` pip list|awk -F ' ' '{print $1}'`;do pip install --upgrade $i;done

පයිප්ප පැකේජ යාවත්කාලීන කිරීම සඳහා වඩාත්ම පිරිසිදු හා ඉහළම කියවිය හැකි ක්‍රමය මෙයයි. මහා.
මාර්ක් ෂස්ට් එම්. ඇකඩමියේ

12

තරමක් පුදුමාකාර කහ මදය මෙය පහසු කරයි.

pip install yolk3k # don't install `yolk`, see https://github.com/cakebread/yolk/issues/35
yolk --upgrade

කහ මදය පිළිබඳ වැඩි විස්තර සඳහා: https://pypi.python.org/pypi/yolk/0.4.3

ඔබට ප්‍රයෝජනවත් විය හැකි බොහෝ දේ එයට කළ හැකිය.


3
ඔබේ පිළිතුර සිට වෙනස් කර yolkඇත yolk3k, ඔබේ මුල් පිළිතුරට නිසැකවම python3 සමඟ ගැටළු ඇති විය.
AXO

10

@ රාමනාගේ පිළිතුර මට, මෙහි සිටින අයට වඩාත්ම හොඳය , නමුත් මට උඩ පන්දු කිහිපයක් එකතු කිරීමට සිදුවිය:

import pip
for dist in pip.get_installed_distributions():
    if 'site-packages' in dist.location:
        try:
            pip.call_subprocess(['pip', 'install', '-U', dist.key])
        except Exception, exc:
            print exc

මෙම site-packagesඔවුන් පද්ධතිය වෙබ් අඩවිය පැකේජ බහලුම තුල නොමැති නිසා චෙක්පත්, මාගේ සංවර්ධන පැකේජ ටික. උත්සාහය හැර PyPI වෙතින් ඉවත් කර ඇති පැකේජ මඟ හැරේ.

ndendolith: මම බලාපොරොත්තු වූයේ පහසු දෙයක් pip.install(dist.key, upgrade=True)ද, නමුත් එය විධාන රේඛාව හැර වෙනත් කිසිවක් භාවිතා කිරීමට අදහස් කළ බවක් නොපෙනේ (ලියකියවිලි අභ්‍යන්තර API ගැන සඳහන් නොකරයි, සහ නල සංවර්ධකයින් භාවිතා නොකළේ docstrings).


උබුන්ටු (සහ වෙනත් ඩේබියන් ව්‍යුත්පන්නයන්) මත, pipපෙනෙන ආකාරයට පැකේජ /usr/local/lib/python2.7/dist-packagesහෝ ඊට සමාන ය. ifමෙම අවස්ථාවේදී ප්‍රකාශයේ 'අඩවි පැකේජ' වෙනුවට ඔබට '/ usr / local / lib /' භාවිතා කළ හැකිය.
ඩ්‍රෙවිකෝ

10

මෙම pip_upgrade_outdatedරැකියා කරන්නේ. එහි ලියකියවිලි අනුව :

usage: pip_upgrade_outdated [-h] [-3 | -2 | --pip_cmd PIP_CMD]
                            [--serial | --parallel] [--dry_run] [--verbose]
                            [--version]

Upgrade outdated python packages with pip.

optional arguments:
  -h, --help         show this help message and exit
  -3                 use pip3
  -2                 use pip2
  --pip_cmd PIP_CMD  use PIP_CMD (default pip)
  --serial, -s       upgrade in serial (default)
  --parallel, -p     upgrade in parallel
  --dry_run, -n      get list, but don't upgrade
  --verbose, -v      may be specified multiple times
  --version          show program's version number and exit

පියවර 1:

pip install pip-upgrade-outdated

පියවර 2:

pip_upgrade_outdated

1
පියවර 1: නල ස්ථාපනය නල යාවත්කාලීන කිරීම-යල් පැන ගිය පියවර 2:
නල

9

හරහා යවා එම එක පිප්ස් එකකට ජන කිරීම සඳහා අදින්න-ඉල්ලීම ; මේ අතර මා ලියූ මෙම නල පුස්තකාල විසඳුම භාවිතා කරන්න:

from pip import get_installed_distributions
from pip.commands import install

install_cmd = install.InstallCommand()

options, args = install_cmd.parse_args([package.project_name
                                        for package in
                                        get_installed_distributions()])

options.upgrade = True
install_cmd.run(options, args)  # Chuck this in a try/except and print as wanted

දෝෂ හැසිරවීම සහිත අනුවාදය (අදහස් අනුව): gist.github.com/SamuelMarks/7885f2e8e5f0562b1063
සැමුවෙල් මාර්ක්ස්

9

මෙය මට වැඩ කරන බවක් පෙනෙන්නට තිබුණි ...

pip install -U $(pip list --outdated|awk '{printf $1" "}')

printfපැකේජයේ නම් නිසි ලෙස වෙන් කිරීම සඳහා මම පසුව ඉඩක් භාවිතා කළෙමි .


7

මෙය පයිතන් 3 සඳහා පවර්ෂෙල් විසඳුමකි:

pip3 list --outdated --format=legacy | ForEach { pip3 install -U $_.split(" ")[0] }

සහ පයිතන් 2 සඳහා:

pip2 list --outdated --format=legacy | ForEach { pip2 install -U $_.split(" ")[0] }

මෙය පැකේජ එකින් එක වැඩි දියුණු කරයි. ඉතින් අ

pip3 check
pip2 check

පසුව කිසිදු පරායත්තතාවයක් බිඳී නොමැති බවට වග බලා ගත යුතුය.



7

වින්ඩෝස් හි කෙටිම හා පහසුම.

pip freeze > requirements.txt && pip install --upgrade -r requirements.txt && rm requirements.txt

Windows වින්ඩෝස් 7 හි එන්කූයාමි -r නොමැතිව මෙම විධානය ක්‍රියා නොකරයි. -r අවශ්‍යතා ගොනුව වෙත යන මාර්ගය වළක්වා ගත යුතුය.
චොකොමොන්කි


6

මෙය වඩාත් effective ලදායී නොවේද?

pip3 list -o | grep -v -i warning | cut -f1 -d' ' | tr " " "\n" | awk '{if(NR>=3)print}' | cut -d' ' -f1 | xargs -n1 pip3 install -U 
  1. pip list -o යල් පැන ගිය පැකේජ ලැයිස්තුගත කරයි;
  2. grep -v -i warningwarningයාවත්කාලීන කිරීමේදී දෝෂ වළක්වා ගැනීම සඳහා ප්‍රතිලෝම ගැලපීම ක්‍රියාත්මක වේ
  3. cut -f1 -d1' ' පළමු වචනය ලබා දෙයි - යල් පැන ගිය පැකේජයේ නම;
  4. tr "\n|\r" " "බහු cutරේඛීය ප්‍රති result ලය තනි රේඛාවක්, අවකාශය වෙන් කළ ලැයිස්තුවක් බවට පරිවර්තනය කරයි ;
  5. awk '{if(NR>=3)print}' ශීර්ෂ රේඛා මඟ හැරේ
  6. cut -d' ' -f1 පළමු තීරුව ලබා ගනී
  7. xargs -n1 pip install -U එහි වම්පස ඇති පයිප්පයෙන් තර්ක 1 ක් ගෙන පැකේජ ලැයිස්තුව යාවත්කාලීන කිරීම සඳහා එය විධානය වෙත යවයි.

මෙන්න මගේ ප්‍රතිදානය: kerberos iwlib PyYAML Could pygpgme Could Could Could ...සියලුම “හැකි” බව සටහන් කරන්න. නිමැවුම් සිට එම කඳ pip list -o"අවශ්යතාව <පැකේජය> තෘප්තිමත් කරන ඕනෑම බාගත කිරීම් සොයා ගැනීමට නොහැක" යන
DrStrangepork

ඔබට ප්‍රතිදානය ඇලවිය හැකිද pip list -o?
ඇලෙක්ස් වී

අදහස් මෙය හොඳින් සංයුති නොකරයි, නමුත් මෙන්න # pip list -o; urwid (Current: 1.1.1 Latest: 1.3.0); Could not find any downloads that satisfy the requirement python-default-encoding; pycups (Current: 1.9.63 Latest: 1.9.68); Could not find any downloads that satisfy the requirement policycoreutils-default-encoding; Could not find any downloads that satisfy the requirement sepolicy;
ස්නිපටයක්

භාවිතා නොකළ යුතු සියලුම පේළි පෙරීම වෙනුවට, යාවත්කාලීනයක් පවතින රේඛා පෙරීමට මම යෝජනා කරමි : pip install -U $(pip list -o | grep -i current | cut -f1 -d' ' | tr "\n|\r" " ") . එසේ නොමැතිනම් ඔබට අවශ්‍ය නොවන එක් පේළියක් පහසුවෙන් මග හැරිය හැකි අතර DrStrangeprk සඳහන් කළ ප්‍රති result ලය ලබා ගත හැකිය.
ප්‍රතිදේහ

xargsඒ වෙනුවට භාවිතා කිරීමට මම තරයේ නිර්දේශ කරමි . pip list -o | awk '/Current:/ {print $1}' | xargs -rp -- pip install -Uමෙම -rබව ධජය වගකීම pip install -Uකිසිදු යල් පැන ගිය පැකේජ පවතී නම් ක්රියාත්මක කළ නොහැකි වනු ඇත. මෙම -pධජය ඕනෑම විධානය ක්රියාත්මක පෙර තහවුරු කිරීම සඳහා පරිශීලකගෙන් විමසනු ලැබේ. -n1එක් එක් පැකේජය වෙන වෙනම ස්ථාපනය කිරීමට පෙර ඔබට ධජය එක් කළ හැකිය .
හය

6

ඇඩ් රයිට්ස් සහිත පවර්ෂෙල් 5.1 හි එක් පේළියක්, පයිතන් 3.6.5 සහ පයිප් ver 10.0.1:

pip list -o --format json | ConvertFrom-Json | foreach {pip install $_.name -U --no-warn-script-location}

ලැයිස්තුවේ කැඩුණු පැකේජ හෝ විශේෂ රෝද නොමැති නම් එය සුමටව ක්‍රියා කරයි ...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.