मैं अपनी परियोजनाओं के लिए निर्भरता की सूची बनाए रखने के लिए पाइप आवश्यकता फ़ाइल का उपयोग करता हूं।

अब मैं खुद को pip install --install-option='some-setup.py.option' लेकिन pip freeze का उपयोग करके एक पुस्तकालय स्थापित करने के लिए अपने आउटपुट में इन विकल्पों को रिकॉर्ड नहीं करता, जिसे मैं अपने प्रोजेक्ट के requirements.txt में सहेजता हूं। यह समस्याओं का कारण बनता है क्योंकि एक नई मशीन पर एक साधारण pip install -r requirements.txt इस पुस्तकालय के लिए आवश्यक तर्कों की आपूर्ति के बिना सभी निर्भरताओं को स्थापित करता है, और मैंने सरल राउंड-ट्रिप ऑपरेशन खो दिया है।

तो, मेरा दूसरा भाग प्रश्न है:

  • क्या किसी तरह पिप फ़्रीज़ आउटपुट में पिप इंस्टाल विकल्पों को बनाए रखने का कोई तरीका है?
  • यदि नहीं, तो इंस्टॉल विकल्प जोड़ने के लिए आवश्यकता फ़ाइल को मैन्युअल रूप से हैक करने का कोई तरीका है? मैं pip freeze की राउंड ट्रिप प्रकृति को खोने के साथ ठीक हूं, और आवश्यकता फ़ाइल के मैन्युअल रखरखाव पर स्विच कर रहा हूं। मैंने दस्तावेज़ों की जांच की है, लेकिन मदद के लिए कुछ भी नहीं देख सका।

अनावश्यक लेकिन संभवतः दिलचस्प विवरण अनुसरण करते हैं

मैं pymongo इंस्टॉल करना चाहता हूं लेकिन सी एक्सटेंशन के निर्माण के बिना ताकि मैं इसे ईवेंटलेट में एसिंक्रोनस रूप से उपयोग कर सकूं आधारित ऐप।

वांछित के रूप में स्थापित करें और आवश्यकताएँ बनाएँ। txt:

(test)day@office:~/test$ pip install pymongo --install-option='--no_ext'
Downloading/unpacking pymongo
  Downloading pymongo-2.1.1.tar.gz (199Kb): 199Kb downloaded
  Running setup.py egg_info for package pymongo
Installing collected packages: pymongo
  Running setup.py install for pymongo
Successfully installed pymongo
Cleaning up...
(test)day@office:~/test$ pip freeze >  requirements.txt
(test)day@office:~/test$ cat requirements.txt
bottle==0.10.7
distribute==0.6.10
eventlet==0.9.16
greenlet==0.3.3
lxml==2.3.3
pymongo==2.1.1
simplejson==2.3.2
wsgiref==0.1.2

नए वर्चुअलएन्व में, requirements.txt से उसी प्रोजेक्ट को स्थापित करने का प्रयास करें। पाइप पाइमोंगो के लिए सी एक्सटेंशन बनाता है :(

(test2)day@office:~/test2$ pip install -r requirements.txt 
...
Downloading/unpacking pymongo==2.1.1 (from -r requirements.txt (line 6))
  Downloading pymongo-2.1.1.tar.gz (199Kb): 199Kb downloaded
  Running setup.py egg_info for package pymongo
Installing collected packages: pymongo
  Running setup.py install for pymongo
    building 'bson._cbson' extension
    gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Ibson -I/usr/include/python2.6 -c bson/_cbsonmodule.c -o build/temp.linux-i686-2.6/bson/_cbsonmodule.o
...
Successfully installed pymongo
Cleaning up...

अपडेट करें अंक 271 अप्रैल 2011 में पीआईपी के खिलाफ खोला गया था जिसमें प्रति-पंक्ति --install-option निर्दिष्ट करने की क्षमता मांगी गई थी। आवश्यकताएँ.txt। अगर आपकी भी यही समस्या है तो कृपया इस मुद्दे के लिए वोट करें।

27
Day 16 जिंदा 2012, 04:29
यदि आप आवश्यकता फ़ाइल में मैन्युअल रूप से --install-option='--no_ext' जोड़ते हैं, तो क्या यह काम करता है? - यदि नहीं, तो मुझे संदेह है कि आपको अनुरोध करना होगा कि पाइप डेवलपर्स इस कार्यक्षमता को जोड़ दें (जो एक अच्छा विचार है!)
 – 
lofidevops
6 फरवरी 2012, 16:10
3
यह काम नहीं करता मुझे डर है। इसके लिए पहले से ही एक सुविधा अनुरोध है, जिसे अप्रैल 2011 में खोला गया: github.com/pypa/pip/issues /271. कृपया अपना +1 वहां भी जोड़ें।
 – 
Day
7 फरवरी 2012, 04:01

2 जवाब

सबसे बढ़िया उत्तर

संस्करण 7.0 के बाद से (रिलीज़ 2015-05-21), pip में पार्स करने की क्षमता है --install-option और --global-option आवश्यकता फाइलों से। अब आपके requirements.txt में निम्न पंक्ति होना संभव होना चाहिए:

pymongo==2.1.1 --install-option='--no_ext'

अधिक जानकारी यहां और यहां

26
Day 14 जुलाई 2017, 20:19

यह शायद बहुत भोला हो सकता है, लेकिन यदि आप आवश्यकताओं और संबंधित विकल्पों को मैन्युअल रूप से प्रबंधित करने के साथ ठीक हैं - तो उन्हें एक छोटी शेल स्क्रिप्ट के रूप में क्यों नहीं बनाए रखें जिसमें संपूर्ण पाइप मंत्र शामिल है? फीचर अनुरोध को सुनने तक बस एक कामकाज :)

6
fgeller 21 फरवरी 2012, 15:15