সুডোর সাথে অজগর ভার্চুয়ালেনভ কীভাবে ব্যবহার করবেন?


47

আমি একটি পাইগন পরিবেশকে এক / ডিরেক্টরি / হোমের নীচে নয় এমন একটি ডিরেক্টরিতে সিস্টেমের থেকে পৃথক করার জন্য চেষ্টা করছি কারণ একাধিক ব্যবহারকারীর জন্য অ্যাক্সেসযোগ্য অন্যান্য সফ্টওয়্যার তৈরি করতে আমার এটি ব্যবহার করা দরকার। আমি ভার্চুয়ালেনভকে ঠিকঠাক তৈরি এবং সক্রিয় করতে পারি, তবে যখন আমি sudoকিছু কমান্ড করি (উদাহরণস্বরূপ অন্যান্য সফ্টওয়্যার তৈরি বা সংকলন করার জন্য) তখন এটি ব্যবহৃত হয় পাইথন সিস্টেমটি (আমি উপলব্ধ মডিউলগুলির কারণে বলতে পারি)।

উবুন্টুতে যেহেতু মূল ব্যবহারকারীকে ব্যবহার করা ভাল জিনিস নয় , তাই sudoকোনও ভার্চুয়ালেনভকে বলার উপায় আছে কি ? বা সম্ভবত এটি সঠিক পদ্ধতির নয় এবং আমার একটি সম্পূর্ণ নতুন অজগর স্থাপন করা উচিত?

আমি উবুন্টু 12.04 (এবং পাইথন 2.7) এর 64 বিট সংস্করণটি ব্যবহার করছি।


1
নিম্নলিখিত কাজ করে? সুডো $ (যা অজগর) <script>
জন ড্রিনে

উত্তর:


57

বিষয়টি প্রায় নিশ্চিতভাবেই যে আপনি যখন চালাবেন sudo, তখন ভার্চুয়ালেনভ এনভায়রনমেন্ট ভেরিয়েবল, এলিয়াস, ফাংশন ইত্যাদি বহন করা হবে না।

সমাধানটি হ'ল স্পষ্টভাবে ভার্চুয়াল পরিবেশের পাইথনটি দিয়ে এক্সিকিউটেবলের সাথে চালানো sudo। উদাহরণস্বরূপ, যদি আপনার ভার্চুয়ালনেভ ./AwesomeProject হয়, তবে আপনি sudo ./AwesomeProject/bin/python <script>স্ক্রিপ্টটি ভার্চুয়ালেনভের সাথে রুট সুবিধার সাথে ব্যবহার করতে দৌড়াতে পারেন।


3
আপনি আপনার স্ক্রিপ্টের প্রথম লাইনটি আপনার ভার্চুয়ালনেভের পাইথন বাইনারিতে নির্দেশ করতে পারেন। #!<virtualenv_dir>/bin/python
অরেঞ্জটাক্স

উঘ, বিরক্তিকর যে এটি এখন পর্যন্ত কেবল সমাধান। ম্যাক-এ, সুডো পাইথন ভার্চুয়াল এনভিও থেকে পাইথন ব্যবহার করে।
গাফান

4

কেবল এটি জুড়েই হোঁচট খেয়েছে এবং অন্যদের জন্য যারা একই সমস্যাটি খুঁজে পেতে পারে, কেন ঠিক যে এনভির ভেরিয়েবলগুলি বহন করা হচ্ছে না। আমি যে সমাধানটি ব্যবহার করেছি তা হ'ল আমার স্ক্রিপ্টে নিম্নলিখিত লাইনগুলি যুক্ত করা। স্ক্রিপ্ট থেকে সরাসরি ভার্চুয়াল পরিবেশটি লোড করার এতে অতিরিক্ত সুবিধা রয়েছে। (এর অর্থ আপনি ক্রোনটাব দিয়ে স্ক্রিপ্টটি ব্যবহার করতে পারেন বা অন্য কোনও কার্যবিধি ছাড়াই চালু করতে পারেন))

base_dir = os.path.dirname(os.path.abspath(__file__))
activate_this = os.path.join(base_dir, 'venv/bin/activate_this.py')
execfile(activate_this, dict(__file__=activate_this))

এখানে আরও পটভূমি: https://virtualenv.pypa.io/en/latest/userguide.html# using-virtualenv-without-bin- python


4

কখনও কখনও আপনার updated PATH আপডেট হওয়া প্রয়োজন কারণ স্ক্রিপ্টটি অন্যান্য প্রোগ্রামগুলি চালায়। উদাহরণস্বরূপ পাইপাই-ইনস্টল করার জন্য PATH-তে py2dsc-deb প্রয়োজন। এই আদেশটি কাজ করে:sudo sh -c ". venv/bin/activate ; pypi-install $PACKAGE"

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