আপনার বিশ্বব্যাপী সাইট-প্যাকেজগুলি থেকে ভার্চুয়ালেনভ নির্দিষ্ট প্যাকেজগুলির উত্তরাধিকারী করুন


208

আমি একটি ভার্চুয়ালেনভ তৈরির একটি উপায় খুঁজছি যাতে বেস পাইথন ইনস্টলেশনটির কয়েকটি লাইব্রেরি (যা আমি বেছে নিয়েছি) থাকবে।

আরও কংক্রিট হওয়ার জন্য, আমি ভ্যাচুয়ালেনভ তৈরির সময় আমার ম্যাটপ্ল্লিটিবকে ভার্চুয়ালেনভে আমদানির চেষ্টা করছি। এটি পাইপ বা ইজি_ইনস্টল দিয়ে দক্ষতার সাথে ইনস্টল করা যাবে না কারণ এটি কিছু ফোর্টরান সংকলক লিবগুলি মিস করে। এখন পর্যন্ত আমি যেভাবে এটি করেছি তা হ'ল ম্যানুয়ালি অনুলিপি করা

/usr/lib/python2.7/dist-packages/ to virtualenv_name/lib/python2.7/dist-packages/

তবে এটি ম্যানুয়ালি আমদানিকৃত লিঙ্কগুলি কুসুম দ্বারা নিবন্ধিত হতে বাধা দেয় (যা বর্তমানে ভার্চুয়ালেনভের সমস্ত উপলভ্য লিবস মুদ্রণ করে)।

সুতরাং, এর একটি নির্বাচনী বৈকল্পিক করার উপায় আছে

virtualenv --system-site-packages

16
মৃদু অনুস্মারক - দয়া করে নীচের একটির যদি কাজ করে বলে একটি উত্তর নির্বাচন করুন।
foobarbecue

1
দেখে মনে হচ্ছে গত কয়েক মাস ধরে 12 জন আপনার জন্য পরীক্ষা করেছে ...
foobarbecue

2
কেন ওপরে পেস্টার? আমরা সকলেই দেখতে পাচ্ছি কোনটি সবচেয়ে জনপ্রিয় উত্তর; তিনি তা গ্রহণ করেন কিনা তা কি আসলেই কিছু যায় আসে? আমি মনে করি নিজের জন্য পরীক্ষার ক্ষেত্রে তার অখণ্ডতা, কেবল সর্বাধিক জনপ্রিয় উত্তরটিকে টিকিয়ে না দিয়ে প্রশংসিত হওয়া উচিত।
মাইকেল শ্যাপার

5
২০১৩: সঠিক এবং ভুল উত্তরের মধ্যে উত্তর স্কোরগুলি বেশ অনুরূপ। ওপি বলেছেন তিনি পরীক্ষা করবেন। 2016: মাইকেল শ্যাপার এতটাই মুগ্ধ হয়েছেন যে ওপি (তিন বছর আগে) বলেছিলেন যে পরীক্ষা করবে। 2017: আমি আবার এই প্রশ্নটি এসেছি এবং আনন্দিত।
foobarbecue

2
সঠিক উত্তর নেই। ওপি নির্বাচনের জন্য জিজ্ঞাসা করলেন --system-site-packages। উত্তরগুলি অ-নির্বাচনী ব্যবহারের --system-site-packagesএবং তারপরে স্থানীয়ভাবে কিছু প্যাকেজ ওভার ইনস্টল করার পরামর্শ দেয় যা কী আলাদা এবং এর বিভিন্ন প্রভাব রয়েছে different
পাইওটার জুরকিউইচ

উত্তর:


238

সঙ্গে পরিবেশ তৈরি করুন virtualenv --system-site-packages। তারপরে, ভার্চুয়ালেনভকে সক্রিয় করুন এবং যখন আপনি সিস্টেম অজগর নয়, ভার্চুয়ালেনভে জিনিসগুলি ইনস্টল করতে চান, তখন ব্যবহার করুন pip install --ignore-installedবা pip install -I। সিস্টেম-প্রশস্ত সংস্করণ বিদ্যমান থাকলেও এইভাবে পাইপ স্থানীয়ভাবে আপনি যা অনুরোধ করেছেন তা ইনস্টল করবে। আপনার পাইথন ইন্টারপ্রেটারটি ভার্চুয়ালেনভের প্যাকেজ ডিরেক্টরিতে প্রথম দেখবে, সুতরাং সেই প্যাকেজগুলি বিশ্বব্যাপী shadow


45
-আই ব্যবহার করে আপনি সর্বদা প্যাকেজগুলি পুনরায় ইনস্টল করবেন, এমনকি যদি সেগুলি সিস্টেমব্যাপী সাইট-প্যাকেজ ডিরেক্টরিতে উপস্থিত রয়েছে। আপনি যদি এর পরিবর্তে -U ব্যবহার করেন তবে এটি আপনার ভার্চুয়াল্নভে প্যাকেজগুলির নতুন সংস্করণ ইনস্টল করবে, তবে প্রয়োজনীয় সংস্করণ সহ সিস্টেমে ইতিমধ্যে উপলব্ধ প্যাকেজগুলি পুনরায় ইনস্টল করবে না।
ড্যানিলো বার্গেন

15
আপনি কি জানেন যে পূর্বে তৈরি ভার্চুয়াল পরিবেশে - সিস্টেমে সাইট-প্যাকেজ বিকল্পটি 'সক্রিয়' করার কোনও উপায় আছে কিনা? আমি আমার সমস্ত স্থানীয় প্যাকেজ পুনরায় ইনস্টল করার ঝামেলা এড়াতে চাই!
গ্যাব্রিয়েল


আমি এই উত্তরটি খুব আকর্ষণীয় পেয়েছি, তবে আমার খুব অদ্ভুত ঘটনা হয়েছে যেখানে এটি কার্যকর হয়নি। আমার সক্ষেত্রে একটি ভার্চুয়ালেনভ রয়েছে no-global-site-packages। তবে কোনও কারণে আমি জানি না যে এমন একটি প্যাকেজ ছিল যা বিশ্বব্যাপী সিস্টেম থেকে ব্যবহৃত হয়েছিল। pip install -Iভ্যুচুয়ালেনভের ভিতরে থেকে প্যাকেজটি ব্যবহার করা কার্যকর হয়নি। অবশেষে আমি ভার্চুয়ালেনভ এবং গ্লোবাল সিস্টেম উভয় থেকেই অস্থায়ীভাবে প্যাকেজটি আনইনস্টল করে শেষ করেছি, তারপরে আমি এটিকে আবার ভার্চুয়ালেনভ এবং সিস্টেমে ইনস্টল করতে পারি (সেই ক্রমে)। সুতরাং এখন এটি কাজ করে।
kstenger

3
-1 প্রশ্নটি নির্দিষ্ট প্যাকেজগুলিকে দৃশ্যমান করার জন্য জিজ্ঞাসা করে , ছায়াময় প্যাকেজ ব্যতীত সমস্ত নয় । একটি সীমাবদ্ধ সেটকে হোয়াইটলিস্ট করা হোয়াইটলিস্টিংয়ের চেয়ে অনেক বেশি নিরাপদ হবে কারণ এটি গ্যারান্টির অনুমতি দেয় যে স্পষ্টভাবে শ্বেত তালিকাভুক্ত প্যাকেজ ব্যতীত সমস্ত প্যাকেজ ভেনভে থাকতে হবে।
bluenote10

19

আপনি আপনার --system-site-packagesভার্চুয়ালেনভের জন্য নির্দিষ্ট জিনিসটিকে "ওভার ইনস্টল" করতে পারেন। এইভাবে, আপনি আপনার ভার্চুয়ালেনভের মধ্যে ইনস্টল করা সমস্ত কিছু সেখান থেকে নেওয়া হবে, অন্যথায় এটি আপনার সিস্টেম থেকে নেওয়া হবে।


অস্পষ্ট কিনা তা সম্পর্কে আমি ঠিক নিশ্চিত নই, তবে চেষ্টা করব: যদি আপনি - সিস্টেমে-সাইট-প্যাকেজ বিকল্পের সাহায্যে একটি ভার্চুয়ালেনভ তৈরি করেন তবে সিস্টেমটি প্রথমে আপনার ভার্চুয়ালেনভের প্যাকেজগুলি সন্ধান করার চেষ্টা করবে, যদি এটি সেখানে না পাওয়া যায়, তবে আপনার সিস্টেমে পাইথন ইনস্টলেশন এটিতে চেষ্টা করুন। এটি যদি এটি সেখানে না খুঁজে পায় তবেই এটি উত্থাপন করবে এবং আমদানি করা হবে।
schacki

4
এই পদ্ধতির সাথে একমাত্র সমস্যা হ'ল আপনার এখন সমস্ত সিস্টেম লাইব্রেরি রয়েছে। যেখানে আপনি কী ইনস্টল করা হয়েছে তার উপর খুব শক্ত নিয়ন্ত্রণ পেতে পারেন।
ডোয়াইন

7
কী অস্পষ্ট তা আসলে কীভাবে সম্ভব! যদি আপনি সিস্টেমে মাইক্রোগ বিদ্যমান - - সিস্টেম-সাইট-প্যাকেজগুলির সাথে তৈরি ভার্চুয়ালেনভে মাইপ্রোগটি মাইপ্রোগ করেন তবে এটি মাইপ্রোগ "ওভার ইনস্টল" করবে না। এটি সন্ধান করবে যে মাইপ্রোগ বিদ্যমান, এবং "প্রয়োজনীয়তা ইতিমধ্যে তৃপ্ত"। তো ... মানে কি?
foobarbecue

-5

এর সাথে ভার্চুয়াল এনভিভি ইনস্টল করুন

virtualenv --system-site-packages

আর ব্যবহার করুন pip install -U to install matplotlib


3
প্রশ্নটি যা জিজ্ঞাসা করেছিল তার বিপরীতে এটি।
ড্যান গেটেজ

-7

আপনি ব্যবহার করতে পারেন virtualenv --clear। যা কোনও প্যাকেজ ইনস্টল করবে না, তারপরে আপনার পছন্দসই ইনস্টল করুন।


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