स्टीफन का प्रस्ताव एक अच्छा विचार है, लेकिन दुर्भाग्य से यह काम नहीं करता है यदि आप अपनी फ़ाइल में केवल प्रत्यक्ष आवश्यकताओं को शामिल करते हैं, जो मुझे साफ लगता है।
सभी निर्भरता की स्थापना रद्द कर दी जाएगी, यहां तक कि खुद को distribute
तोड़कर भी pip
।
एक आभासी वातावरण पर नज़र रखने वाले संस्करण के दौरान स्वच्छ आवश्यकताओं की फाइल बनाए रखना
यहां बताया गया है कि मैं अपने वर्चुअल वातावरण को कैसे ट्रैक करता हूं। मैं requirements.txt
केवल प्रत्यक्ष आवश्यकताओं सहित न्यूनतम को बनाए रखने की कोशिश करता हूं , और संस्करण की कमी का भी उल्लेख नहीं करता हूं जहां मुझे यकीन नहीं है।
लेकिन इसके अलावा, मैं एक venv.pip
फ़ाइल में मेरे वर्चुअन की वास्तविक स्थिति को संस्करण ट्रैकिंग (गिट कहो) में रखता हूं और शामिल करता हूं ।
यहाँ एक नमूना वर्कफ़्लो है:
वर्चुअन ट्रैकिंग के साथ सेटअप वर्चुअन कार्यक्षेत्र:
mkdir /tmp/pip_uninstalling
cd /tmp/pip_uninstalling
virtualenv venv
. venv/bin/activate
संस्करण ट्रैकिंग सिस्टम को इनिशियलाइज़ करें:
git init
echo venv > .gitignore
pip freeze > venv.pip
git add .gitignore venv.pip
git commit -m "Python project with venv"
निर्भरता के साथ एक पैकेज स्थापित करें, इसे आवश्यकताओं फ़ाइल में शामिल करें:
echo flask > requirements.txt
pip install -r requirements.txt
pip freeze > venv.pip
अब अपना ऐप बनाना शुरू करें, फिर एक नई शाखा शुरू करें और शुरू करें:
vim myapp.py
git commit -am "Simple flask application"
git checkout -b "experiments"
एक अतिरिक्त पैकेज स्थापित करें:
echo flask-script >> requirements.txt
pip install -r requirements.txt
pip freeze > venv.pip
... इसके साथ खेलते हैं, और फिर पहले के संस्करण में वापस आते हैं
vim manage.py
git commit -am "Playing with flask-script"
git checkout master
अब असंगत संकुल की स्थापना रद्द करें:
pip freeze | grep -v -f venv.pip | xargs pip uninstall -y
मुझे लगता है कि प्रक्रिया को हुक हुक के साथ स्वचालित किया जा सकता है, लेकिन चलो विषय से दूर नहीं जाते हैं।
बेशक, यह समझ में आता है कि कुछ पैकेज कैशिंग सिस्टम या स्थानीय रिपॉजिटरी का उपयोग करने के लिए जैसे pip2pi