เป็นไปได้ไหมที่จะอัพเกรดแพ็คเกจ Python ทั้งหมดในคราวเดียวด้วยpip
?
หมายเหตุ : มีการร้องขอคุณสมบัติสำหรับตัวติดตามปัญหาอย่างเป็นทางการ
pip
เกิดข้อผิดพลาดคือrequests
cannot import name IncompleteRead
เป็นไปได้ไหมที่จะอัพเกรดแพ็คเกจ Python ทั้งหมดในคราวเดียวด้วยpip
?
หมายเหตุ : มีการร้องขอคุณสมบัติสำหรับตัวติดตามปัญหาอย่างเป็นทางการ
pip
เกิดข้อผิดพลาดคือrequests
cannot import name IncompleteRead
คำตอบ:
ยังไม่มีธงในตัว แต่คุณสามารถใช้
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
The grep
คือการข้ามคำจำกัดความแพคเกจที่สามารถแก้ไขได้ ("-e") ตามที่แนะนำโดย @jawache (ใช่คุณสามารถแทนที่grep
+ cut
ด้วยsed
หรือawk
หรือperl
หรือ ... )
การ-n1
ตั้งค่าสถานะเพื่อxargs
ป้องกันการหยุดทุกอย่างหากการอัปเดตหนึ่งแพคเกจล้มเหลว (ขอบคุณ@andsens )
pip install -U
มันจะอัปเดตแพ็คเกจทั้งหมด ฉันกลัวว่ามันอาจทำให้เกิดความขัดแย้งกับ apt-get
tee
ก่อนอัปเกรดจริงเพื่อที่คุณจะได้รับรายชื่อของรูปแบบเดิม เช่น pip freeze --local | tee before_upgrade.txt | ...
นั้นจะเป็นการง่ายกว่าหากมีปัญหา
-H
เพื่อsudo
หลีกเลี่ยงข้อความแสดงข้อผิดพลาดที่น่ารำคาญ: $ pip freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 sudo -H pip install -U
คุณสามารถใช้รหัส Python ดังต่อไปนี้ ซึ่งแตกต่างจากpip freeze
นี้จะไม่พิมพ์คำเตือนและข้อผิดพลาด FIXME
สำหรับ pip <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)
สำหรับ pip> = 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)
import pip
pip.install('packagename')
?
เพื่ออัพเกรดแพ็คเกจท้องถิ่นทั้งหมด; คุณสามารถใช้pip-review
:
$ pip install pip-review
$ pip-review --local --interactive
pip-review
pip-tools
เป็นทางแยกของ ดูpip-tools
ปัญหาที่กล่าวถึงโดย@knedlsepp pip-review
แพ็คเกจใช้งานได้ แต่pip-tools
แพ็คเกจใช้งานไม่ได้อีกต่อไป
pip-review
ทำงานบน Windows ตั้งแต่รุ่น 0.5
pip-review --local --auto
ทำงานบน Windows ควรทำเพื่อคนอื่นด้วย ($ เป็นไดเรกทอรีใดก็ตามที่คุณอยู่ในพร้อมรับคำสั่งเช่น C: / Users / ชื่อผู้ใช้>)
ทำ
$ pip freeze > requirements.txt
เปิดไฟล์ข้อความแทนที่==
ด้วย>=
และดำเนินการ
$ pip install -r requirements.txt --upgrade
หากคุณมีปัญหากับแพคเกจบางอย่างที่ทำให้การอัปเกรด (บางครั้งไม่จำเป็น) ให้ไปที่ไดเรกทอรี ($) ใส่ชื่อออก (เพิ่ม # ก่อนหน้า) และเรียกใช้การอัปเกรดอีกครั้ง คุณสามารถยกเลิกการใส่ข้อคิดเห็นในส่วนนั้นในภายหลัง สิ่งนี้ยังยอดเยี่ยมสำหรับการคัดลอกสภาพแวดล้อมของ python
อีกทางหนึ่ง:
ฉันชอบวิธีตรวจสอบ pip ด้วย:
py2
$ pip install pip-review
$ pip-review --local --interactive
py3
$ pip3 install pip-review
$ py -3 -m pip_review --local --interactive
คุณสามารถเลือก 'a' เพื่ออัพเกรดแพ็คเกจทั้งหมด หากการอัพเกรดล้มเหลวให้รันอีกครั้งและดำเนินการต่อในการอัพเกรดถัดไป
requirements.txt
=={version}
ตัวอย่างเช่นpython-dateutil==2.4.2
การpython-dateutil
สำหรับทุกบรรทัด
$ pip freeze | cut -d '=' -f1> requirements.txt
เพื่อที่จะลบรุ่น
pip3 install -r <(pip3 freeze) --upgrade
อย่างมีประสิทธิภาพ<(pip3 freeze)
เป็น
รุ่นของ Windows หลังจากปรึกษาเอกสารที่ยอดเยี่ยมสำหรับFOR
โดย Rob van der Woude
for /F "delims===" %i in ('pip freeze -l') do pip install -U %i
for /F "delims= " %i in ('pip list --outdated') do pip install -U %i
เร็วขึ้นเพราะจะลองและอัปเดตแพ็คเกจ "ล้าสมัย" เท่านั้น
for /F "skip=2 delims= " %i in ('pip list --outdated') do pip install --upgrade %i
. หากมีการเรียกใช้จากไฟล์ชุดให้แน่ใจว่าจะใช้แทน%%i
%i
นอกจากนี้โปรดทราบว่าการอัปเดตpip
ก่อนใช้งานคำสั่งนี้จะpython -m pip install --upgrade pip
ปลอดภัยกว่า
$ pip install pipupgrade
$ pipupgrade --verbose --latest --yes
pipupgradeช่วยให้คุณอัพเกรดระบบท้องถิ่นหรือแพ็คเกจจากrequirements.txt
ไฟล์ได้! นอกจากนี้ยังเลือกอัพเกรดแพ็คเกจที่ไม่ทำให้เกิดการเปลี่ยนแปลง pipupgrade ยังช่วยให้แน่ใจว่าจะอัพเกรดแพ็คเกจที่มีอยู่ในสภาพแวดล้อม Python หลาย ๆ เข้ากันได้กับ Python2.7 +, Python3.4 + และ pip9 +, pip10 +, pip18 +, pip19 +
หมายเหตุ: ฉันเป็นผู้เขียนเครื่องมือ
Checking...
ตลอดไปเมื่อฉันลอง
[0;93mChecking...[0m
ModuleNotFoundError: No module named 'ctypes.windll'
คุณสามารถพิมพ์แพ็คเกจที่ล้าสมัยได้
pip freeze | cut -d = -f 1 | xargs -n 1 pip search | grep -B2 'LATEST:'
pip freeze --local | cut -d = -f 1 | xargs -n 1 pip search | grep -B2 'LATEST:'
python -m pip list outdated
(แม้ว่าจะไม่ได้อยู่ในรูปแบบที่ต้องการ)
ตัวเลือกนี้ดูเหมือนจะตรงไปตรงมาและอ่านง่ายขึ้น:
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
ในคำสั่ง awk NR>2
ข้ามสองระเบียนแรก (บรรทัด) และ{print $1}
เลือกคำแรกของแต่ละบรรทัด (ตามคำแนะนำของ SergioAraujo ฉันลบtail -n +3
ตั้งแต่awk
สามารถจัดการกับการข้ามบันทึกได้)
awk 'NR>2 {print $1}'
ทำความสะอาดผลลัพธ์สำหรับคุณ
ซับในแบบต่อไปนี้อาจช่วยได้:
(pip> 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
ตั้งค่าสถานะและกำหนดข้อผิดพลาดที่จะละเว้นอย่างชัดเจนโดย "piping" บรรทัดต่อไปนี้สำหรับแต่ละข้อผิดพลาดแยกต่างหาก:
| 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
| sed 's/^<First characters of the error>.*//'
เท่าที่ต้องการ ขอบคุณ!
pip list --outdated | cut -d ' ' -f 1 | xargs -n 1 pip install --upgrade
โซลูชันที่แข็งแกร่งยิ่งขึ้น
สำหรับ pip3 ใช้สิ่งนี้:
pip3 freeze --local |sed -rn 's/^([^=# \t\\][^ \t=]*)=.*/echo; echo Processing \1 ...; pip3 install -U \1/p' |sh
สำหรับ pip เพียงลบ 3s เช่น:
pip freeze --local |sed -rn 's/^([^=# \t\\][^ \t=]*)=.*/echo; echo Processing \1 ...; pip install -U \1/p' |sh
OSX Oddity
OSX เมื่อเดือนกรกฎาคม 2560 เรือพร้อมรุ่นเก่าที่เก่าแก่มาก (อายุสิบปี) หากต้องการรับนิพจน์ทั่วไปเพิ่มเติมให้ใช้ -E แทน -r ในโซลูชันด้านบน
การแก้ปัญหาด้วยวิธีแก้ปัญหายอดนิยม
โซลูชันนี้ได้รับการออกแบบและทดสอบเป็นอย่างดี1ในขณะที่มีปัญหาแม้แต่วิธีแก้ปัญหายอดนิยมที่สุด
คำสั่งดังกล่าวใช้ไวยากรณ์ pip ที่ง่ายที่สุดและพกพาได้มากที่สุดเมื่อใช้ร่วมกับ sed และ sh เพื่อเอาชนะปัญหาเหล่านี้อย่างสมบูรณ์ รายละเอียดของการดำเนินงาน sed สามารถพิจารณากับรุ่นความเห็น2
รายละเอียด
[1] ทดสอบและใช้งานเป็นประจำในคลัสเตอร์ 4.8.16-200.fc24.x86_64 และทดสอบกับห้ารสชาติ Linux / Unix อื่น ๆ นอกจากนี้ยังทำงานบน Cygwin64 ที่ติดตั้งบน Windows 10 จำเป็นต้องทำการทดสอบบน 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] การอัพเกรดองค์ประกอบ Python หรือ PIP ที่ใช้ในการอัพเกรดองค์ประกอบ Python หรือ PIP อาจเป็นสาเหตุของการหยุดชะงักหรือความเสียหายของฐานข้อมูลแพ็คเกจ
sed
ของจูราสสิกของ OS X คือการใช้gsed
(GNU sed) แทน ที่จะได้รับbrew install gnu-sed
ดูเหมือนรัดกุมกว่านี้
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.
ฉันมีปัญหาเดียวกันกับการอัพเกรด สิ่งที่ฉันไม่เคยอัพเกรดแพคเกจทั้งหมด ฉันอัพเกรดเฉพาะสิ่งที่ฉันต้องการเพราะโครงการอาจแตก
เนื่องจากไม่มีวิธีที่ง่ายในการอัปเกรดแพคเกจตามแพ็คเกจและอัปเดตไฟล์ requirements.txt ฉันจึงเขียนpip-upgraderนี้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
อาร์กิวเมนต์ในคำสั่งของคุณ
การเปิดเผยแบบเต็ม: ฉันเขียนแพ็คเกจนี้
virtualenv
ไม่ได้เปิดใช้งานpip-upgrade --skip-virtualenv-check
จากhttps://github.com/cakebread/yolk :
$ pip install -U `yolk -U | awk '{print $1}' | uniq`
แต่คุณต้องได้ไข่แดงก่อน:
$ sudo pip install -U yolk
รุ่นหนึ่งซับของ@ คำตอบของ
python -c 'import pip, subprocess; [subprocess.call("pip install -U " + d.project_name, shell=1) for d in pip.get_installed_distributions()]'
`
sudo pip install
ใช้virtual envแทน
เมื่อใช้ virtualenv และถ้าคุณเพียงต้องการอัพเกรดแพ็คเกจที่เพิ่มเข้าไปใน virtualenv ของคุณคุณอาจต้องการ:
pip install `pip freeze -l | cut --fields=1 -d = -` --upgrade
ทางออกที่ง่ายและเร็วที่สุดที่ฉันพบในการอภิปรายปัญหา pipคือ:
pip install pipdate
pipdate
ใช้แพ็คอัพเดต awk:
pip install -U $(pip freeze | awk -F'[=]' '{print $1}')
ปรับปรุง windows powershell
foreach($p in $(pip freeze)){ pip install -U $p.Split("=")[0]}
คุณสามารถลองสิ่งนี้:
for i in ` pip list|awk -F ' ' '{print $1}'`;do pip install --upgrade $i;done
ไข่แดงที่น่าทึ่งทำให้มันง่าย
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
มันสามารถทำสิ่งต่าง ๆ มากมายที่คุณอาจพบว่ามีประโยชน์
yolk
การyolk3k
คำตอบเดิมของคุณแน่นอนมีปัญหาเกี่ยวกับ python3
@ คำตอบของ Ramanaทำงานได้ดีที่สุดสำหรับฉันจากที่นี่ แต่ฉันต้องเพิ่มไม่กี่:
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
@endolith: ฉันหวังว่าจะเป็นเรื่องง่ายpip.install(dist.key, upgrade=True)
เหมือนกัน แต่ดูเหมือนว่า pip จะไม่ถูกใช้กับสิ่งใดนอกจากบรรทัดคำสั่ง (เอกสารไม่ได้พูดถึง API ภายในและนักพัฒนา pip ไม่ได้ใช้ docstrings)
pip
ดูเหมือนว่าจะบรรจุภัณฑ์ใน/usr/local/lib/python2.7/dist-packages
หรือคล้ายกัน คุณสามารถใช้ '/ usr / local / lib /' แทน 'site-packages' ในif
คำสั่งในกรณีนี้
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
ที่ส่งผ่านดึงการร้องขอไปยังพื้นบ้าน pip ; ในระหว่างนี้ให้ใช้วิธีแก้ไขปัญหาของ pip library ที่ฉันเขียนไว้:
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
ดูเหมือนว่าจะเหมาะกับฉัน ...
pip install -U $(pip list --outdated|awk '{printf $1" "}')
ฉันใช้printf
ช่องว่างหลังจากนั้นเพื่อแยกชื่อแพคเกจอย่างเหมาะสม
นี่เป็นโซลูชัน PowerShell สำหรับ Python 3:
pip3 list --outdated --format=legacy | ForEach { pip3 install -U $_.split(" ")[0] }
และสำหรับ Python 2:
pip2 list --outdated --format=legacy | ForEach { pip2 install -U $_.split(" ")[0] }
นี่เป็นการอัพเกรดแพ็คเกจหนึ่งต่อหนึ่ง ดังนั้น
pip3 check
pip2 check
หลังจากนั้นควรตรวจสอบให้แน่ใจว่าไม่มีการอ้างอิงใด ๆ ที่ใช้งานไม่ได้
เกี่ยวกับ:
pip install -r <(pip freeze) --upgrade
สั้นที่สุดและง่ายที่สุดบน Windows
pip freeze > requirements.txt && pip install --upgrade -r requirements.txt && rm requirements.txt
สคริปต์ของฉัน:
pip list --outdated --format=legacy | cut -d ' ' -f1 | xargs -n1 pip install --upgrade
สิ่งนี้มีประสิทธิภาพมากกว่านี้หรือไม่
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
pip list -o
แสดงรายการแพ็กเกจที่ล้าสมัย;grep -v -i warning
จับคู่ inverted warning
เพื่อหลีกเลี่ยงข้อผิดพลาดเมื่ออัปเดตcut -f1 -d1' '
ส่งคืนคำแรก - ชื่อของแพคเกจที่ล้าสมัย;tr "\n|\r" " "
แปลงผลลัพธ์หลายcut
บรรทัดจากเป็นรายการบรรทัดเดียวที่คั่นด้วยช่องว่างawk '{if(NR>=3)print}'
ข้ามบรรทัดส่วนหัว cut -d' ' -f1
ดึงข้อมูลคอลัมน์แรกxargs -n1 pip install -U
รับ 1 อาร์กิวเมนต์จากไพพ์ซ้ายของมันและส่งผ่านไปยังคำสั่งเพื่ออัพเกรดรายการแพ็กเกจkerberos iwlib PyYAML Could pygpgme Could Could Could ...
โปรดสังเกต "s" ทั้งหมด ต้นกำเนิดมาจากผลลัพธ์ของpip list -o
"ไม่พบการดาวน์โหลดใด ๆ ที่ตรงตามข้อกำหนด <package>"
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 พูดถึง
xargs
แทน pip list -o | awk '/Current:/ {print $1}' | xargs -rp -- pip install -U
การ-r
ตั้งค่าสถานะทำให้แน่ใจได้ว่าpip install -U
จะไม่ถูกเรียกใช้หากไม่มีแพ็กเกจที่ล้าสมัย การ-p
ตั้งค่าสถานะพร้อมท์ให้ผู้ใช้ยืนยันก่อนดำเนินการคำสั่งใด ๆ คุณสามารถเพิ่มการ-n1
ตั้งค่าสถานะเพื่อให้พร้อมท์คุณก่อนที่จะติดตั้งแต่ละแพคเกจแยกต่างหาก
หนึ่งบรรทัดใน PowerShell 5.1 ที่มีสิทธิ์ผู้ดูแลระบบ, Python 3.6.5 และ pip ver 10.0.1:
pip list -o --format json | ConvertFrom-Json | foreach {pip install $_.name -U --no-warn-script-location}
มันทำงานได้อย่างราบรื่นหากไม่มีแพ็คเกจที่ขาดหรือล้อพิเศษในรายการ ...
pip freeze
(เช่นbundle install
หรือnpm shrinkwrap
) ที่ดีที่สุดในการบันทึกสำเนาของที่ก่อนที่จะซ่อม