अधिक मजबूत समाधान
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 तक, बहुत पुराने संस्करण सेड (एक दर्जन साल पुराना) के साथ जहाज। विस्तारित नियमित अभिव्यक्ति प्राप्त करने के लिए, उपरोक्त समाधान में -r के बजाय -E का उपयोग करें।
लोकप्रिय समाधान के साथ मुद्दों को सुलझाने
इस समाधान को अच्छी तरह से डिज़ाइन किया गया है और 1 का परीक्षण किया गया है , जबकि सबसे लोकप्रिय समाधानों के साथ भी समस्याएं हैं।
- पोर्ट कमांड लाइन की विशेषताओं को बदलने के कारण पोर्टेबिलिटी के मुद्दे
- Xargs का क्रैश होना क्योंकि कॉमन पाइप या pip3 चाइल्ड प्रोसेस फेलियर हैं
- कच्चे xargs उत्पादन से भीड़ लॉगिंग
- एक अजगर-टू-ओएस पुल पर निर्भर है जिसके फलस्वरूप यह उन्नयन 3
उपरोक्त कमांड इन मुद्दों को पूरी तरह से दूर करने के लिए sed और sh के संयोजन में सबसे सरल और सबसे पोर्टेबल पाइप सिंटैक्स का उपयोग करता है। Sed ऑपरेशन के विवरण की टिप्पणी संस्करण 2 के साथ जांच की जा सकती है ।
विवरण
[१] लिनक्स ४.१.१६-२००.fc24.x86_64 क्लस्टर में परीक्षण और नियमित रूप से उपयोग किया जाता है और पांच अन्य लिनक्स / यूनिक्स स्वादों पर परीक्षण किया जाता है। यह विंडोज 10. पर स्थापित Cygwin64 पर भी चलता है। iOS पर परीक्षण की आवश्यकता है।
[२] कमांड की शारीरिक रचना को अधिक स्पष्ट रूप से देखने के लिए, यह टिप्पणियों के साथ उपरोक्त 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
[३] एक पायथन या पीआईपी घटक को अपग्रेड करना जिसका उपयोग पायथन या पीआईपी घटक के उन्नयन में भी किया जाता है, एक गतिरोध या पैकेज डेटाबेस भ्रष्टाचार का संभावित कारण हो सकता है।
pip freeze
(जैसेbundle install
याnpm shrinkwrap
) सभी स्थापित पैकेजों के सटीक संस्करण को सूचीबद्ध कर सकते हैं । टिंकर करने से पहले उसकी एक प्रति सहेजना सर्वोत्तम है।