पाइप फ्रीज़ बनाम पाइप सूची


111

आउटपुट की तुलना से मतभेदों का पता चलता है:

user@user-VirtualBox:~$ pip list
feedparser (5.1.3)
pip (1.4.1)
setuptools (1.1.5)
wsgiref (0.1.2)
user@user-VirtualBox:~$ pip freeze
feedparser==5.1.3
wsgiref==0.1.2

पिप के प्रलेखन में कहा गया है

freeze                      Output installed packages in requirements format.
list                        List installed packages.

लेकिन "आवश्यकताओं का प्रारूप" क्या है, और इससे pip listअधिक व्यापक सूची क्यों उत्पन्न होती है pip freeze?


5
FYI करें, यहाँ डॉक्स हैं
एलेक्सी सिप

जवाबों:


109

जब आप एक का उपयोग कर रहे हैं virtualenv, तो आप requirements.txtसभी निर्भरताओं को स्थापित करने के लिए एक फ़ाइल निर्दिष्ट कर सकते हैं ।

एक विशिष्ट उपयोग:

$ pip install -r requirements.txt

पैकेज pipको समझने के लिए एक विशिष्ट प्रारूप में होना चाहिए, जो कि है

feedparser==5.1.3
wsgiref==0.1.2
django==1.4.2
...

वह "आवश्यकताओं का प्रारूप" है।

यहाँ, django==1.4.2इसका मतलब djangoसंस्करण स्थापित है 1.4.2(भले ही नवीनतम 1.6.x है)। यदि आप निर्दिष्ट नहीं करते हैं ==1.4.2, तो उपलब्ध नवीनतम संस्करण इंस्टॉल किया जाएगा।

आप " वर्चुअनव और पाइप मूल बातें ", और आधिकारिक " आवश्यकताएँ फ़ाइल प्रारूप " प्रलेखन में अधिक पढ़ सकते हैं ।


5
समझ गया। क्या कोई विशेष कारण है कि "सूची" "फ्रीज" की तुलना में अधिक व्यापक सूची का उत्पादन करती है?
नाइट्रेल

2
मुझे लगता है कि यह इसलिए है क्योंकि pip listसब कुछ सूचीबद्ध करता है, और pip freezeपाइप द्वारा स्थापित सब कुछ स्थापित करता है।
कार्तिक

हम्म, यह एक सिद्धांत है, लेकिन मुझे पूरा यकीन है कि मैंने नहीं किया pip install wsgiref
नाइट्रेल

पायथन 3.2 में wsgiref.egg-infoलिब डायरेक्टरी शामिल है, यही वजह है कि पाइप इसके बारे में जानता है। आप पाइप से इसे [संयुक्त राष्ट्र] स्थापित नहीं कर सकते, और बाद में पायथन के संस्करण मेटाडेटा फ़ाइल को छोड़ देते हैं ताकि यह दिखाई न दे।
ज़ोआबा

1
@ लेओनिड यदि आपको अंत में संस्करण संख्या से छुटकारा मिलता है, तो यह नवीनतम संस्करण को pypi से स्थापित करेगा। जवाब पूरी तरह से पढ़ें
karthikr

42

इस प्रश्न के दूसरे भाग का उत्तर देने के लिए, दो पैकेज दिखाए गए हैं pip listलेकिन वे नहीं pip freezeहैं setuptools(जो कि easy_install है) और pipस्वयं।

ऐसा लगता है कि pip freezeकेवल उन पैकेजों को सूचीबद्ध नहीं करता है जो पाइप खुद पर निर्भर करता है। आप --allउन पैकेजों को भी दिखाने के लिए ध्वज का उपयोग कर सकते हैं ।

से प्रलेखन :

--all

आउटपुट में इन पैकेजों को न छोड़ें: पाइप, सेटपूल, वितरण, पहिया


3
pip freezeयह --allदिखाने का विकल्प भी है: pip, setuptools, distribute, wheel pip.pypa.io/en/stable/reference/pip_freeze
Chananel P

कम वितरित
अधिकतम क्लेनर

37

मुख्य अंतर यह है कि आउटपुट pip freeze को एक आवश्यकताओं में डाला जा सकता है। फ़ाइल को बाद में उपयोग किया जाता है और "जमे हुए" वातावरण को फिर से बनाने के लिए उपयोग किया जाता है।

दूसरे शब्दों में, आप चला सकते हैं: pip freeze > frozen-requirements.txtएक मशीन पर और बाद में एक अलग मशीन पर या एक स्वच्छ वातावरण पर, जो आप कर सकते हैं: pip install -r frozen-requirements.txt और आपको एक समान वातावरण मिलेगा, जैसा कि मूल वातावरण में आपके द्वारा स्थापित किए गए समान निर्भरता के साथ है जमे-आवश्यकताओं को उत्पन्न किया।


26

को देखो पिप प्रलेखन , जो दोनों के रूप में की कार्यक्षमता का वर्णन करता है:

पाइप सूची

संपादित किए गए पैकेजों को सूचीबद्ध करें, जिसमें एडिटेबल्स भी शामिल हैं।

पाइप फ्रीज

आउटपुट स्थापित पैकेज आवश्यकताओं आवश्यकताओं में।

तो दो अंतर हैं:

  1. आउटपुट स्वरूप, freezeहमें मानक आवश्यकता प्रारूप देता है जिसका उपयोग बाद में pip install -rआवश्यकताओं को स्थापित करने के लिए किया जा सकता है।

  2. आउटपुट सामग्री, pip listइसमें एडिटेबल्स शामिल हैं जो pip freezeनहीं करता है।


हमें editables से क्या मतलब है?
श्री सूर्या झा


5

pip listसभी पैकेज दिखाता है।

pip freezeशो संकुल आप के माध्यम से स्थापित pip(याpipenv अगर उस उपकरण का उपयोग) एक आवश्यकताओं प्रारूप में आदेश।

जब मेरा वर्चुअल लिफाफा बनाया जाता है तो उस सेटपूल , पाइप , व्हील के नीचे रिमार्क लगाए जाते हैं pipenv shell। मेरे द्वारा ये पैकेज स्थापित नहीं किए गए थे pip:

test1 % pipenv shell
Creating a virtualenv for this project
Pipfile: /Users/terrence/Development/Python/Projects/test1/Pipfile
Using /usr/local/Cellar/pipenv/2018.11.26_3/libexec/bin/python3.8 (3.8.1) to create virtualenv
 Creating virtual environment...
<SNIP>
Installing setuptools, pip, wheel...
done.
 Successfully created virtual environment! 
<SNIP>

अब की समीक्षा और संबंधित आदेशों जहां मैं केवल स्थापित किया है के उत्पादन की तुलना शांत-लिब और sampleproject (जिनमें से peppercorn निर्भरता है):

test1 % pip freeze       <== Packages I'VE installed w/ pip

-e git+https://github.com/gdamjan/hello-world-python-package.git@10<snip>71#egg=cool_lib
peppercorn==0.6
sampleproject==1.3.1


test1 % pip list         <== All packages, incl. ones I've NOT installed w/ pip

Package       Version Location                                                                    
------------- ------- --------------------------------------------------------------------------
cool-lib      0.1  /Users/terrence/.local/share/virtualenvs/test1-y2Zgz1D2/src/cool-lib           <== Installed w/ `pip` command
peppercorn    0.6       <== Dependency of "sampleproject"
pip           20.0.2  
sampleproject 1.3.1     <== Installed w/ `pip` command
setuptools    45.1.0  
wheel         0.34.2
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.