পাইথন ইনস্টলেশনটিকে ডিফল্ট প্লাস এপ প্যাকেজ নির্ভরতা পুনরুদ্ধার করুন


14

আমি আমার পাইথন ইনস্টলেশনগুলির সাথে প্রচুর পরিমাণে খেলেছি (2 এবং 3) এবং একগুচ্ছ প্যাকেজ ইনস্টল করেছি, কিছু ব্যবহার করছে apt-getতবে বেশিরভাগ ব্যবহার করছি pip। আমি অনেকগুলি নতুন aptইনস্টল করা প্যাকেজটিকে আরও pipনতুন সংস্করণে আপগ্রেড করেছি ।

আমার প্রশ্নটি হল:
আমি কীভাবে এই সমস্ত পরিবর্তনগুলি বিপরীত করতে পারি, সমস্ত- pipইনস্টল করা পাইথন প্যাকেজগুলি সরিয়ে ফেলতে পারি এবং কেবলমাত্র তাদের ডিফল্ট সংগ্রহস্থল সংস্করণে প্রাক-ইনস্টল করা প্যাকেজগুলির ডিফল্ট সেট রাখতে পারি, apt-getকেবলমাত্র অন্যান্য সফ্টওয়্যারের নির্ভরতা হিসাবে ইনস্টল করা থাকে , সর্বদা সংগ্রহস্থলটিতে ডাউনগ্রেড হয় সংস্করণ যদি প্রয়োজন হয়।

সিস্টেমটির জন্য একটি পাইথন পরিবেশের পরিপাটি করতে এবং আমার ভার্চুয়ালেনভগুলিতে কেবল আমার পরিবর্তনগুলি পেতে আমি এটি করতে চাই।

কোনও সিস্টেম পুনরায় ইনস্টল করা ছাড়া এটি কি সম্ভব? আমি কিভাবে এটি কাছে যেতে হবে?


উত্তর:


5

আমি পাইথন প্যাকেজগুলি পরিচালিত তালিকা দিয়ে শুরু করব 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)

তারপরে আপনি ম্যানুয়ালি ইনস্টল করা পাইথন প্যাকেজগুলি আনইনস্টল করুন, উদাহরণস্বরূপ:

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

পরবর্তী, আপনি পিপ ব্যবহার করে কোন প্যাকেজ ইনস্টল করেছেন তা জানতে চান:

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

এই কমান্ডটি সর্বশেষ পরিবর্তনের তারিখ অনুসারে বাছাই করা পাইপের ইনস্টল ডিরেক্টরিগুলির বিষয়বস্তু তালিকাভুক্ত করে, আপনার নিজের দ্বারা ইনস্টল করা প্যাকেজগুলি সন্ধান করা আরও সহজ করে তোলে। উদাহরণস্বরূপ, আমি গুগলের gcloudসরঞ্জামটি ইনস্টল করেছি যা একটি আনুষাঙ্গিক পাইপ প্যাকেজ ইনস্টল করে যা আমি আনইনস্টল করতে চাই না, তবে তালিকাটি অনুসন্ধান করে দেখতে সহজ যে এগুলি সব একই সময়ে ইনস্টল করা হয়েছিল, তাই আমি জানি যে আমার কোনটি করা উচিত ছেড়ে দিন এবং কোনটি আমি আনইনস্টল করতে পারি। কোনও পাইপ প্যাকেজ আনইনস্টল করার আগে আপনার প্যাকেজ ইনস্টল করা তালিকার একটি স্ন্যাপশট নেওয়া উচিত:

$ sudo pip freeze > $HOME/pip_freeze_snapshot.txt

তারপরে আপনার প্যাকেজগুলি কেবল ইনস্টল করুন, উদাহরণস্বরূপ:

$ sudo pip uninstall py pytest

শেষ অবধি, ভুলে যাবেন না যে আপনার ব্যবহারকারী ডিরেক্টরিতে কিছু পাইপ প্যাকেজ ইনস্টল করা থাকতে পারে। সম্ভবত আপনি তা ঠিক আছেন, তবে তা না হলে আপনি সেগুলি তালিকাভুক্ত করতে পারেন:

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

আপনি যদি এই সমস্ত প্যাকেজগুলি থেকে মুক্তি পেতে চান তবে আপনি কেবল এই ডিরেক্টরিটি মুছতে পারেন। অন্যথায়, পৃথক প্যাকেজগুলি কেবল আনইনস্টল করুন, উদাহরণস্বরূপ:

$ pip uninstall tensorflow

অন্যান্য অজগর সংস্করণ (যেমন, 3.5) পরীক্ষা করতে ভুলবেন না।


আমি একটি জননিরাপত্তা সুরক্ষা ঘোষণার প্রস্তাব দিচ্ছি যে খুব বেশি প্যাকেজ অপসারণ করা আপনার সিস্টেমকে পঙ্গু করতে পারে, তবে অন্যথায় এটি একটি দুর্দান্ত গাইড। (উদাহরণস্বরূপ, আমি আমার mvচেয়ে বরং খুশি হয়েছিলাম কারণ আমি কয়েক মিনিট পরে আবিষ্কার করেছি যে মোটামুটি বেসিক সিস্টেমের জন্য আমার সেখানে কিছু জিনিস দরকার ছিল।rm/usr/local/lib/python3.6
ক্রাক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.