পাইথনের বড় সংস্করণ আপগ্রেড হওয়ার পরে প্যাকেজগুলি স্বয়ংক্রিয়ভাবে ভার্চুয়াল পরিবেশে পুনরায় ইনস্টল করুন


10

venvপাইথন ৩.6 এর মডিউলটি দিয়ে আমার ডিস্কে শুয়ে থাকা বেশ কয়েকটি ভার্চুয়াল পরিবেশ (কয়েক ডজন) পেয়েছি । এখন আমি তাড়াহুড়ো করে উবুন্টু 19.10 তে আপগ্রেড করেছি এবং কেবলমাত্র পরে লক্ষ করেছি যে সাধারণভাবে স্বীকৃত উত্সগুলি থেকে উবুন্টু 19.10 এর জন্য 3.6 মোটেই উপলব্ধ নয়। আমি আমার ভার্চুয়াল ডিরেক্টরিতে অবস্থিত এবং অন্তর্ভুক্ত ফোল্ডারে চালিয়ে এই ভার্চুয়াল পরিবেশের পাইথন সংস্করণগুলিকে আপগ্রেড করতে সক্ষম করেছি ।bin/python3python3.7 -mvenv --upgrade

এখন, python3.7 -mvenv --upgradeভার্চুয়াল পরিবেশে পাইথনটিকে আপগ্রেড করার সময় , এটি এর lib/python3.7/site-packagesঅধীনে আমার পূর্ববর্তী প্যাকেজ সংস্করণগুলি পুনরায় ইনস্টল করতে কিছুই করে না venv। আমি অনুমান করি যে আমি পাইথন ৩. done ইনস্টল করে এটি করতে পেরেছি, pip freezeপ্রয়োজনীয়তাগুলি venvআইএনটি দ্বারা প্রবর্তন করে এবং তারপরে ভেন্টটি পাইথন ৩.7-এ উন্নীত করেছিলাম pip install -r- কেবল যদি আমার নতুন ওএসের জন্য পাইথন ৩.6 ইনস্টল উপলব্ধ থাকে।

আমাকে উত্স থেকে পাইথন 3.6 ইনস্টল না করে, কনডা ব্যবহার করে বা কিছু এলোমেলো পিপিএ থেকে 3.6 ইনস্টল না pip freezeকরে বরং একটি স্বয়ংক্রিয় ফ্যাশনে (সম্ভবত প্রধানত পুরানো lib/python3.6ডিরেক্টরি ব্যবহার করে ) এটি করার অন্য কোনও উপায় আছে কি ? আমি সমস্ত পরিবেশ en masse এ আপগ্রেড করতে চাই যাতে ভবিষ্যতে যখন আমার এলোমেলো পরিবেশের সাথে কিছু করার দরকার হয় এটি পাইথন ৩.7 এর সাথে কাজ করা চালিয়ে যেতে পারে।

উত্তর:


11

আপনার নতুন 3.7 ভেন্টে আপনার pkg_resourcesপাওয়া উচিত - setuptoolsতৈরি হওয়ার পরে স্বয়ংক্রিয়ভাবে ইনস্টল হয়ে যায়। যদি না হয়, ঠিক pip install setuptools

setuptoolsলাইব্রেরি কোডটি আসলে কাজটি pipকরতে বিক্রেত্রী হয় pip freeze। তবে আপনি কেবল এটি ম্যানুয়ালি স্থির করতে পারেন।

# in 3.7 runtime...
import pkg_resources
old_site_dir = ".venv/lib/python3.6/site-packages/"
working_set = pkg_resources.WorkingSet([old_site_dir])
for dist in working_set:
    print(dist.as_requirement())

আপনি সেই আউটপুটটি কোনও requirements.txtফাইলে ফেলে দিতে পারেন এবং সম্ভবত একটি ওয়ার্কিং পুনর্নির্মাণের সাইট থাকতে পারে, কোনও python3.6রানটাইম প্রয়োজন হয় না।

নোট করুন যে এই পদ্ধতিটি 100% বুদ্ধিমান নাও হতে পারে, কারণ প্রকল্পগুলি তাদের বিতরণ মেটাটাটাতে পরিবেশ চিহ্নিতকারী ব্যবহার করে পাইথন 3.6 এবং পাইথন 3.7 এর জন্য পৃথক নির্ভরতা গাছ ঘোষণা করা সম্ভব ( পিইপি 508 দেখুন )। এছাড়া থাকেন তবে আপনার 3.6 সাইটে ইনস্টল আইটেম 3.7 সমর্থন করে না এ সব । তবে এটি দেখতে খুব অস্বাভাবিক বিষয় যে একটি ছোটখাটো সংস্করণে 3..6 এবং ৩.ump এর মধ্যে দ্বিধা রয়েছে, তাই কেবলমাত্র কাজের সেটটি ব্যবহারের অনুশীলনে "যথেষ্ট ভাল" হওয়া উচিত।


"গুড যথেষ্ট" হয় এই ক্ষেত্রে যথেষ্ট। বাল্ক কাজ শেষ হওয়ার পরে এখানে এবং সেখানে বিজোড় মডিউল আপডেট করার ক্ষেত্রে কোনও সমস্যা নেই।
অ্যান্টি হাপালা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.