virtualenv - কোন সাইট-প্যাকেজ এবং পাইপ এখনও বিশ্বব্যাপী প্যাকেজ খুঁজে পাচ্ছে?


136

আমি এমন ছাপের মধ্যে ছিলাম যে virtualenv --no-site-packagesএকটি সম্পূর্ণ পৃথক এবং বিচ্ছিন্ন পাইথন পরিবেশ তৈরি করবে, তবে তা মনে হয় না।

উদাহরণস্বরূপ, আমি পাইথন-জাঙ্গো বিশ্বব্যাপী ইনস্টল করেছি, তবে আলাদা জ্যাঙ্গো সংস্করণ সহ ভার্চুয়ালেনভ তৈরি করতে চাই।

$ virtualenv --no-site-packages foo       
New python executable in foo/bin/python
Installing setuptools............done.
$ pip -E foo install Django
Requirement already satisfied: Django in /usr/share/pyshared
Installing collected packages: Django
Successfully installed Django

আমি যা বলতে পারি তা pip -E foo installথেকে উপরেরটি জ্যাঙ্গোর নতুন সংস্করণ পুনরায় ইনস্টল করার কথা। এছাড়াও, আমি যদি পরিবেশকে হিমায়িত করতে পাইপটি বলি, তবে আমি পুরোপুরি প্যাকেজ পাই। আমি আশা করব যে এটি দিয়ে একটি নতুন পরিবেশের জন্য --no-site-packagesফাঁকা হবে?

$ pip -E foo freeze
4Suite-XML==1.0.2
BeautifulSoup==3.1.0.1
Brlapi==0.5.3
BzrTools==1.17.0
Django==1.1
... and so on ...

আমি কীভাবে --no-site-packagesকাজ করার কথা ভেবে ভুল করছি ?


4
FYI, --no-সাইট-প্যাকেজগুলি হ্রাস করা হয়েছে। এখানে দেখুন
সালেম বেন মাব্রুক

@ সেলামবেনমব্রুক লিঙ্কটি নষ্ট, এখানে নতুন লিঙ্ক । গিথুব সম্পর্কিত সম্পর্কিত সমস্যা: '--no-সাইট-প্যাকেজ' পতাকাটি কি অদৃশ্য হয়ে গেছে?
Ynjxsjmh

এই লিঙ্কে, এটি বলেছে --no-site-packagesমঞ্জুরিপ্রাপ্ত। কেবল পশ্চাদপদ সামঞ্জস্যের জন্য ধরে রেখেছি। গ্লোবাল সাইট-প্যাকেজগুলিতে অ্যাক্সেস না পাওয়া এখন ডিফল্ট আচরণ । আপনি যদি বিশ্বব্যাপী সাইট-প্যাকেজগুলিতে অ্যাক্সেস করতে চান তবে আপনি সক্ষম করতে পারেন --system-site-packages
Ynjxsjmh

উত্তর:


107

আমার এ জাতীয় সমস্যা ছিল, যতক্ষণ না বুঝেছি (আমি ভার্চুয়ালেনভ আবিষ্কার করার অনেক আগে), আমি আমার .bashrc ফাইলে পাইথনপথে ডিরেক্টরি যুক্ত করে চলেছি। এটি আগে এক বছর কেটে গেছে, আমি সরাসরি এটি সম্পর্কে ভাবিনি।


12
আমার নায়ক! যদি আপনি কেবল এটি সত্যিই খুব দ্রুত আপনার সমস্যা কিনা তা পরীক্ষা করতে চান তবে আপনি পাইথনপথ আছে কিনা তা দেখতে প্রিন্টেনভ চালাতে পারেন এবং যদি তা হয় তবে আনসেট পাইথনপথ চালান। আপনি যদি সমস্যাটি আর পপ আপ করতে না চান তবে আপনাকে এখনও সমস্যাটি সন্ধান করতে হবে, তবে এটি আপনাকে বর্তমান শেল সেশনে একটি নতুন নতুন ভার্চুয়ালেনভ পেতে দেবে।
আল্ট্রাবিজ

হোমব্রুও এটি করে!
রব

1
আমি আশা করি আমি আপনাকে আরও upvote করতে পারে। আমার পাইথনপথটি ইতিমধ্যে সেট হয়ে যাওয়ার কারণে আমি স্টাফগুলির মুখোমুখি হওয়ার পরে একাধিকবার এই পৃষ্ঠাতে এসেছি।
বেমমু

আমি জানি এটি একটি সত্যই (সত্যই) পুরানো পোস্ট, তবে আমি এসও-তে আমার নিজের কিছু প্রশ্ন জিজ্ঞাসা সহ সর্বত্র অনুসন্ধান করেছি এবং কীভাবে --no-site-packagesকাজ করতে হবে তা আমি বুঝতে পারি না । আমি কেবল উবুন্টু মুছা এবং এটি কিছু ঠিক করে দেয় কিনা তা দেখার কাছাকাছি। আমি প্রাথমিকভাবে ভেবেছিলাম যে আমার একই পাইথনপথ সমস্যা ছিল, তবে দৌড়ানোর সময় printenvআমি এটি দেখতে পাচ্ছি না। হতাশা বাড়ছে, এবং যে কোনও সহায়তা অনেক প্রশংসিত। আমার sys.path এর সাথে তৈরি একটি ভিনভের ভিতরে থেকে --no-site-packagesআমার প্যাকেজ ডিরেক্টরিগুলির সমস্ত অন্তর্ভুক্ত রয়েছে। এটি কীভাবে সংশোধন করতে হবে তা আমার কাছে ফোগজিস্ট নেই। সহায়তার প্রয়োজন?
নোটএম্বিবার্নার

PATHআপনি যদি ভার্চুয়ালেনভের বাইরে থেকেও এক্সিকিউটেবল খুঁজে পান তবে এটি আপনার গ্লোবাল ভেরিয়েবলের ক্ষেত্রেও প্রযোজ্য ।
এন্ডারল্যান্ড

27

আপনাকে নিশ্চিত করতে হবে যে pipআপনি তৈরি ভার্চুয়াল পরিবেশে আপনি বাইনারি চালাচ্ছেন , বৈশ্বিক নয়।

env/bin/pip freeze

একটি পরীক্ষা দেখুন:

--no-site-packagesঅপশনটি দিয়ে আমরা ভার্চুয়ালেনভ তৈরি করি :

$ virtualenv --no-site-packages -p /usr/local/bin/python mytest
Running virtualenv with interpreter /usr/local/bin/python
New python executable in mytest/bin/python
Installing setuptools, pip, wheel...done.

আমরা freezeসদ্য নির্মিত থেকে আউটপুট পরীক্ষা করে দেখুন pip:

$ mytest/bin/pip freeze
argparse==1.3.0
wheel==0.24.0

তবে আমরা যদি বিশ্বব্যাপী ব্যবহার করি তবে এটি pipআমরা পাই:

$ pip freeze
...
pyxdg==0.25
...
range==1.0.0
...
virtualenv==13.1.2

এটি হ'ল সমস্ত প্যাকেজ যা pipপুরো সিস্টেমে ইনস্টল হয়েছে। পরীক্ষা করে which pipআমরা পেয়েছি (কমপক্ষে আমার ক্ষেত্রে) এর মতো কিছু /usr/local/bin/pip, যার অর্থ আমরা যখন pip freezeএটি করি তখন এই বাইনারিটির পরিবর্তে কল করা mytest/bin/pip


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

1
এটি আমার জন্য সমস্যা ছিল: আমি pipবিশ্বব্যাপী পাইপের একটি নির্দিষ্ট পথের পথ বন্ধ করে দিয়েছিলাম, যা ভার্চুয়ালেনভকে সক্রিয় করার সময় ওভাররাইড করা হয়নি।
মার্লিনড

1
আপনি কেবল আমাকে বাঁচিয়েছেন, এটি আমার পক্ষে ভাল কাজ করেছে (পাইপ 3 এবং পাইথন 3.7) ধন্যবাদ
সায়েদ ইউসুফ

24

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


2
এফডব্লিউআইডাব্লু, পিপ এবং ভার্চুয়ালেনভের বর্তমান ট্রাঙ্ক সংস্করণ সহ আপনার মূল ওয়ার্কফ্লো এখন আমার পক্ষে ঠিক কাজটি করে। এটি বলেছিল, আমি ব্যক্তিগতভাবে এখনও -E এড়াতে পারি এবং প্রতিটি ভ্যুচুলেএনভে কেবল পাইপ ইনস্টল করি।
কার্ল মায়ার

17

আমি জানি এটি একটি খুব পুরানো প্রশ্ন তবে যারা এখানে সমাধানের সন্ধান করছেন তাদের জন্য:

চলার আগে ভ্যুচুয়ালেনভ ( source bin/activate) সক্রিয় করতে ভুলবেন না pip freeze। অন্যথায় আপনি সমস্ত বিশ্ব প্যাকেজগুলির একটি তালিকা পাবেন get


এর জন্য আপনাকে অনেক ধন্যবাদ, আমি জানতাম আমাকে ভার্চুয়ালেনভের সাথে উত্সটি ব্যবহার করতে হবে তবে ভার্চুয়ালেনভ্রাপার জন্য নয় এবং আমি কখনও পাইপ হিমের কথা শুনিনি heard আবার ধন্যবাদ
ডিপেন্ডেড

সঠিক উত্তর.
ভ্যাচুয়ালেনভ

16

সাময়িকভাবে এর PYTHONPATHসাথে সাফ করুন :

export PYTHONPATH=

তারপরে ভার্চুয়াল পরিবেশটি তৈরি এবং সক্রিয় করুন:

virtualenv foo
. foo/bin/activate

শুধুমাত্র তখন:

pip freeze

15

--no-site-packagesনাম অনুসারে, স্ট্যান্ডার্ড সাইট-প্যাকেজ ডিরেক্টরি থেকে সরানো উচিত sys.path। স্ট্যান্ডার্ড পাইথন পথে অন্য যে কোনও কিছু বেঁচে থাকবে।


1
আমার পরিষ্কার করার জন্য আমার PYTHONPATHসাথে export PYTHONPATH=কৌশলটি মনে হয়েছিল।
জুনিপার-

4

যদি আপনি স্ক্রিপ্টগুলিকে সরাসরি কল করেন script.pyযা উইন্ডোজ ডিফল্ট ওপেনার ব্যবহার করে এবং ভার্চুয়াল পরিবেশের বাইরে পাইথন খুললে উইন্ডোজেও অনুরূপ সমস্যা দেখা দিতে পারে । এটির সাথে কল করা python script.pyভার্চুয়াল পরিবেশের সাথে পাইথন ব্যবহার করবে।


স্ক্রিপ্টের শীর্ষে একটি শেবাং লাইন থাকা উচিত ('# #' দিয়ে ভিক্ষা করা) যা ই ব্যবহার করা হয় তা ব্যাখ্যা করা নির্দেশ করবে।
wobbily_col

2

আপনি যখন ভার্চুয়ালেনভ ডিরেক্টরিটি অন্য ডিরেক্টরিতে (লিনাক্সে) স্থানান্তরিত করেন বা পিতামাতার ডিরেক্টরিটির নতুন নামকরণ করেন তখন এটিও ঘটবে বলে মনে হয়।


1

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

রহস্যময়।


1

ভার্চুয়ালেনভ পিপ কাজ না করার সম্ভাব্য কারণগুলির মধ্যে একটি হ'ল যদি প্যারেন্ট ফোল্ডারগুলির /Documents/project name/app কোনওরই তার নাম পরিবর্তন করে সমস্যার /Documents/projectName/appসমাধান করার জন্য স্থান থাকে space


1

আমি একই সমস্যাটি পেরিয়ে এসেছি যেখানে ভেনভের পাইপ এখনও গ্লোবাল পাইপ হিসাবে কাজ করে।
অনেক পৃষ্ঠা সন্ধানের পরে, আমি এটি এইভাবে খুঁজে বের করি।
1. "--no-সাইট-প্যাকেজগুলি" বিকল্পের সাথে ভার্চুয়ালেনভ দ্বারা একটি নতুন ভেনভ তৈরি করুন

virtualenv --no-site-packages --python=/xx/xx/bin/python my_env_nmae

দয়া করে মনে রাখবেন যে যদিও "--no- সাইট-প্যাকেজগুলি" বিকল্পটি ভার্চুয়ালেনভের ডক ফাইলে ১..0.০ থেকে ডিফল্ট সত্য ছিল, তবে আপনি নিজে নিজে এটি সেট না করেই এটি কাজ করছে না। খাঁটি ভেন্ট পেতে, আমি দৃ strongly়ভাবে এই বিকল্পটি ২ টি চালু করার পরামর্শ দিচ্ছি you

source ./my_env_name/bin/activate
  1. আপনার পাইপের অবস্থান এবং অজগর অবস্থান পরীক্ষা করুন এবং নিশ্চিত করুন যে এই দুটি কমান্ড ভার্চুয়াল এনভায়ারমেন্টের অধীনে রয়েছে
pip --version
which python
  1. বিশ্বব্যাপী প্যাকেজ ইন্টারআপশন থেকে মুক্ত প্যাকেজ ইনস্টল করতে ভার্চুয়াল এনভির অধীনে পিপ ব্যবহার করুন
pip install package_name

এই উত্তর আপনাকে সাহায্য করতে চান!


0

সমস্ত পাইপ ইনস্টল বিকল্পগুলির তালিকা এখানে - আমি কোনও ' -E' বিকল্প খুঁজে পাইনি , এটি পুরানো সংস্করণ হতে পারে। নীচে আমি একটি সরল ইংরেজী ব্যবহার ভাগ করছি এবং virtualenvআসন্ন এসও ব্যবহারকারীদের জন্য কাজ করছি।


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

সংক্ষেপে ভার্চুয়াল এনভায়রনমেন্ট তৈরি এবং (সক্রিয়করণ) ব্যবহার করে) virtualenvবিভিন্ন অ্যাপলিকেশন অর্থাত পাইথন ২.7 এবং ৩.৩ সহ আমাদের অ্যাপ্লিকেশন বা সাধারণ পাইথন স্ক্রিপ্টগুলি পরীক্ষা করা বা পরীক্ষা করা সম্ভব করে তোলে - একটি নতুন ইনস্টলেশন ( --no-site-packagesবিকল্প ব্যবহার করে ) বা বিদ্যমান সমস্ত প্যাকেজ প্যাকেজ হতে পারে / শেষ সেটআপ ( --system-site-packagesবিকল্প ব্যবহার করে )। এটি ব্যবহার করতে আমাদের এটি সক্রিয় করতে হবে:

$ pip install djangoএটি বিশ্বব্যাপী সাইট-প্যাকেজগুলিতে ইনস্টল করবে এবং একইভাবে pip freezeবিশ্বব্যাপী সাইট-প্যাকেজগুলির নাম দেবে।

ভেনভির ভিতরে (ফু) এক্সিকিউটিং $ source /bin/activateভেনভকে সক্রিয় করবে অর্থাৎ এখন পিপ দিয়ে ইনস্টল করা কিছু কেবল ভার্চুয়াল এনভিটিতে ইনস্টল করা হবে এবং কেবল এখন পাইপ ফ্রিজ বিশ্বব্যাপী সাইট-প্যাকেজ পাইথন প্যাকেজগুলির তালিকা দেবে না। একবার সক্রিয়:

$ virtualenv --no-site-packages foo       
New python executable in foo/bin/python
Installing setuptools............done.
$ cd foo
$ source bin/activate 
(foo)$ pip install django

(foo)$সাইনটি ইঙ্গিত করার আগে আমরা ভার্চুয়াল পাইথন পরিবেশ ব্যবহার করছি অর্থাৎ পাইপ - ইনস্টল, ফ্রিজ, আনইনস্টল সহ যে কোনও জিনিসই এই ভেনভের মধ্যে সীমাবদ্ধ থাকবে এবং গ্লোবাল / ডিফল্ট পাইথন ইনস্টলেশন / প্যাকেজগুলির উপর কোনও প্রভাব পড়বে না।

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