কীভাবে সদৃশ ভার্চুয়ালেনভ


130

আমার প্রচুর প্যাকেজ সহ একটি বিদ্যমান ভার্চুয়ালেনভ আছে তবে জ্যাঙ্গোর একটি পুরানো সংস্করণ।

আমি যা করতে চাই তা হ'ল এই পরিবেশটির সদৃশ তাই ঠিক একই প্যাকেজগুলির সাথে আমার অন্য একটি পরিবেশ রয়েছে তবে জ্যাঙ্গোর একটি নতুন সংস্করণ। কিভাবে আমি এটি করতে পারব?


3
আমি আপনার সমস্ত প্রয়োজনীয়তাগুলিকে একটি 'প্রয়োজনীয়তা। টেক্সট' ফাইলে জমা করব এবং অন্য একটি ভার্চুয়ালেনভ তৈরি করব এবং পাইপ ইনস্টল করুন প্রয়োজনীয়তাগুলি চালাব --xt
ক্যালভিন চেং

আপনি যে ভার্চুয়াল পরিবেশটি অনুলিপি করতে চান তার অজগর সংস্করণটি যদি আপনার ডিফল্ট অজগর পরিবেশের থেকে আলাদা হয় তবে আপনি নতুন পরিবেশ সেটআপ করতে পারেন virtualenv -p /path/to/older/venv/bin/python new_venvএবং তারপরে requirements.txtআপনি যেটি তৈরি করেছেন তা ব্যবহার করতে পারেনpip freeze
গিরিবি

উত্তর:


183

প্রয়োজনীয় ফাইলটি তৈরি করতে পাইপ ব্যবহার করা সবচেয়ে সহজ উপায়। প্রয়োজনীয় ফাইলগুলি মূলত এমন একটি ফাইল যা আপনি ইনস্টল করতে চান এমন সমস্ত পাইথন প্যাকেজগুলির একটি তালিকা (বা ইতিমধ্যে পিপ দ্বারা উত্পন্ন ফাইলের ক্ষেত্রে ইনস্টল করেছেন) এবং সেগুলি কী সংস্করণে রয়েছে তার একটি তালিকা।

একটি প্রয়োজনীয় ফাইল তৈরি করতে, আপনার আসল ভার্চুয়ালেনভে যান এবং চালান:

pip freeze > requirements.txt

এটি আপনার জন্য প্রয়োজনীয়তা.টিএসটি ফাইল তৈরি করবে। যদি আপনি সেই ফাইলটি আপনার প্রিয় পাঠ্য সম্পাদকটিতে খুলেন তবে আপনি এমন কিছু দেখতে পাবেন:

Django==1.3
Fabric==1.0.1
etc...

এখন, Django==x.xবলার জন্য বলা লাইনটি সম্পাদনা করুন Django==1.3(বা আপনি যে নতুন সংস্করণটি ইনস্টল করতে চান তা আপনার নতুন ভার্চুয়ালনেভে)।

শেষ অবধি, আপনার নতুন ভার্চুয়ালেনভ সক্রিয় করুন এবং চালান:

pip install -r requirements.txt

এবং পিপ আপনার যা প্রয়োজন সংস্করণে আপনার প্রয়োজনীয়গুলি. txt ফাইলে তালিকাভুক্ত সমস্ত অজগর মডিউলটি স্বয়ংক্রিয়ভাবে ডাউনলোড এবং ইনস্টল করবে !


3
ধন্যবাদ! গুগল করার সময় আমি অনেক শোরগোল, অগোছালো এবং বিভ্রান্তিকর পৃষ্ঠাগুলি খুঁজে পেলাম ... আপনার সমাধানটি এতটাই পরিষ্কার এবং সহজ ... এটি আমার দিনকে পরিণত করেছে;)
ডলমা 33

আমি যদি ফোল্ডারটি অনুলিপি করে তা অন্য মেশিনে পেস্ট করব? এটা কি কাজ করবে? অবশ্যই ধরে নেওয়া যাক
টেলস পডুয়া

প্রকৃতপক্ষে এটি না, যেমন আমি এখনই সন্ধান করছি।
Horcle_buzz

আমি অনেক বার্তা দেখতে পাচ্ছি Could not find a version that satisfies the requirement a_package=#.#.#কি আমি এটিকে সহজে সমাধান করতে পারি? আমি একটি লাইন সরিয়ে নিয়েছি বা সাম্যকে অসমতাতে পরিবর্তন করেছি।
বিশ্বের পরিবর্তন

জন্য কাজ করে pyenvপাশাপাশি। দুর্দান্ত উত্তর।
লিওনার্ড

29

আর একটি বিকল্প virtualenv-cloneপ্যাকেজ ব্যবহার করা হয় :

একটি পুনঃ-স্থানান্তরযোগ্য ভেরুয়ালেভকে ক্লোন করার জন্য একটি স্ক্রিপ্ট script


হাই, আমি কি ঠিক ধরে নিচ্ছি যে এটি আমাকে একটি ফাইলে পুরো অজগর পরিবেশটি অনুলিপি করতে দেয়। তারপরে আমাকে এই ফাইলটি একটি নতুন কম্পিউটার / ওএসে লোড করতে হবে এবং আমি আমার সমস্ত সাইট প্যাকেজ ফিরিয়ে আনব
অ্যাসেমিনিয়ার

2
"ভার্চুয়ালনেভ-ক্লোন উত্স / লক্ষ্য /" একটি মোহনীয় ধন্যবাদ মত কাজ করেছে!
আজানকুব

নিশ্চিত করুন যে আমরা virtualenv-clone
ভার্চুয়ালেনভ


5

আপনি যদি অ্যানাকোন্ডা ব্যবহার করছেন তবে আপনি কেবল চালাতে পারবেন:

conda create --name myclone --clone myenv

এটি myenvনতুন নির্মিত পরিবেশে অনুলিপি করবে myclone


4

virtualenv-cloneপ্যাকেজ ব্যবহার করা সবচেয়ে সহজ বিকল্প ।

সদৃশ venv1করতে venv2, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. virtualenv-cloneহয় venv1বা একটি ডামি ভার্চুয়াল পরিবেশে ইনস্টল করুন venv_dummy। তৈরি করতে venv_dummy:

    python -m virtualenv venv_dummy
    source venv_dummy/bin/activate
  2. ইনস্টল করতে virtualenv-clone:

    (venv_dummy): pip install virtualenv-clone
  3. এতে নকল venv1করতে venv2:

    (venv_dummy): virtualenv-clone venv1/ venv2/


@ এমআরআর .. আপনি bin/activateযদি এই উত্তরটি অনুসরণ করেন তবে আপনাকে সম্পাদনা করতে হবে না । আপনি সম্পাদনা করতে হবে কেন bin/activate?
সাফওয়ান

আমি ক্লোন করার পরে, bin/activate
ব্যাশে

1

আপনি কি সহজভাবে না:

  • বিদ্যমান ভার্চুয়াল env ডিরেক্টরিটি একটি নতুনতে অনুলিপি করুন
  • নতুন জ্যাঙ্গো আপডেট করবেন?

7
কিছু সময় আমি এই পদ্ধতির ব্যবহার করি তবে বিন / অ্যাক্টিভেট স্ক্রিপ্টের অভ্যন্তরে কিছু পাথ আপডেট করার অসুবিধা হয়।
আরমান্ডো পেরেজ মার্কেস

3
পরিবর্তনটি কি এনভির নাম উল্লেখের সাথে সরল সন্ধান এবং প্রতিস্থাপন করে, বা এটি এর চেয়ে জটিল?
গ্রেগ

1
আমার ক্ষেত্রে, কেবল বিন / অ্যাক্টিভেটে VIRTUAL_ENV ধ্রুবকটিতে পথটি আপডেট করা কৌশলটি করেছে
ব্রায়ানফ

1
অন্যদিকে, বিন / অ্যাক্টিভেট পরিবর্তন করা বেশ একটি হ্যাক এবং এটি অবশ্যই কোনও এক মুহুর্তে জিনিসগুলি ভেঙে দিতে পারে কিনা তা ভাবতে হবে। বিশেষত যখন ভার্চুয়াল পরিবেশগুলি উত্পাদন সেটিংসে ব্যবহৃত হয়।
হারবার্ট

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