คืนค่าการติดตั้ง Python ให้เป็นค่าเริ่มต้นรวมถึงการพึ่งพาแพ็คเกจที่เหมาะสม


14

ฉันได้เล่นรอบมากกับการติดตั้งหลามของฉัน (2 และ 3) และการติดตั้งพวงของแพคเกจบางใช้แต่ใช้มากที่สุดapt-get pipฉันได้อัปเกรดaptแพ็คเกจที่ติดตั้งจำนวนมากด้วยpipเป็นเวอร์ชันใหม่กว่า

คำถามของฉันคือ
ฉันจะย้อนกลับการเปลี่ยนแปลงทั้งหมดได้อย่างไรลบpipแพ็คเกจ Python ที่ติดตั้งทั้งหมดและเก็บชุดเริ่มต้นของแพ็คเกจที่ติดตั้งไว้ล่วงหน้าในเวอร์ชันที่เก็บข้อมูลเริ่มต้นรวมทั้งที่ติดตั้งโดยapt-getแต่เป็นการพึ่งพาซอฟต์แวร์อื่นเท่านั้น รุ่นถ้าจำเป็น

ฉันต้องการทำสิ่งนี้เพื่อให้มีสภาพแวดล้อม Python ที่เป็นระเบียบสำหรับระบบและมีการแก้ไขของฉันใน virtualenvs เท่านั้น

เป็นไปได้หรือไม่ที่ไม่มีการติดตั้งระบบใหม่ ฉันจะเข้าใกล้ได้อย่างไร


คำตอบ:


5

ฉันจะเริ่มต้นด้วยการแสดงรายการแพ็กเกจ Python ที่จัดการโดยapt-get(หนึ่งซับต่อไปนี้ใช้เวลาสองสามวินาทีในการรันและอดทน):

$ for pyfile in `ls /usr/lib/python2.7/dist-packages`; do dpkg -S "/usr/lib/python2.7/dist-packages/${pyfile}" | sed 's/:.*//g'; done | sort -u

หมายเหตุ: หากจำเป็นให้แทนที่ 2.7 ด้วยเวอร์ชันไพ ธ อนที่คุณสนใจ

ถัดไปถอนการติดตั้งแพ็คเกจที่คุณติดตั้งด้วยตนเอง หากคุณไม่แน่ใจว่าคุณติดตั้งตัวใดไว้คุณสามารถรับรายการแพ็คเกจทั้งหมดที่ติดตั้งด้วยตนเองโดยใช้คำสั่งต่อไปนี้ (ดูคำถามนี้ ):

$ comm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u)

จากนั้นถอนการติดตั้งแพ็กเกจ Python ที่คุณติดตั้งด้วยตนเองเช่น:

$ sudo apt-get remove python-tk python-scipy

ถัดไปคุณต้องการทราบแพ็คเกจที่คุณติดตั้งโดยใช้ pip:

$ ls -ltd /usr/local/lib/python2.7/dist-packages/*

คำสั่งนี้แสดงรายการเนื้อหาของไดเรกทอรีการติดตั้งของ pip เรียงตามวันที่แก้ไขล่าสุดทำให้ง่ายต่อการค้นหาแพ็คเกจที่คุณติดตั้งด้วยตัวเอง ตัวอย่างเช่นฉันติดตั้งgcloudเครื่องมือของ Google ที่ติดตั้งแพ็คเกจ pip ที่ฉันไม่ต้องการถอนการติดตั้ง แต่มองผ่านรายการมันง่ายที่จะเห็นว่าพวกเขาติดตั้งทั้งหมดในเวลาที่แน่นอนดังนั้นฉันรู้ว่าฉันควร ออกจากและสิ่งที่ฉันสามารถถอนการติดตั้ง ก่อนที่คุณจะถอนการติดตั้งแพ็กเกจ pip ใด ๆ คุณควรถ่ายรูปของรายการแพ็คเกจที่ติดตั้งไว้:

$ sudo pip freeze > $HOME/pip_freeze_snapshot.txt

จากนั้นเพียงถอนการติดตั้งแพ็คเกจที่คุณต้องการเช่น:

$ sudo pip uninstall py pytest

สุดท้ายอย่าลืมว่าแพ็คเกจ pip อาจถูกติดตั้งในไดเรกทอรีผู้ใช้ของคุณ บางทีคุณอาจจะสบายดี แต่ถ้าไม่คุณสามารถแสดงรายการพวกเขา:

$ ls -ltd $HOME/.local/lib/python2.7/site-packages/*

ถ้าคุณต้องการกำจัดแพ็คเกจเหล่านี้คุณสามารถลบไดเร็กทอรี่นี้ได้ มิฉะนั้นเพียงถอนการติดตั้งแพ็คเกจแต่ละตัวเช่น:

$ pip uninstall tensorflow

อย่าลืมตรวจสอบเวอร์ชั่นของไพ ธ อนอื่น ๆ (เช่น 3.5)


ฉันขอแนะนำการประกาศความปลอดภัยสาธารณะที่การลบแพ็คเกจมากเกินไปอาจทำให้ระบบของคุณพิการ แต่อย่างอื่นนี่เป็นแนวทางที่ยอดเยี่ยม (ตัวอย่างเช่นฉันดีใจที่ฉันทำmvมากกว่าrmที่ฉัน/usr/local/lib/python3.6เพราะฉันค้นพบไม่กี่นาทีต่อมาว่าฉันต้องการบางสิ่งบางอย่างในที่นั่นสำหรับฟังก์ชั่นระบบพื้นฐานที่ค่อนข้างเป็นธรรม #
4254
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.