2012-10-19 18 views
12

से एक पैकेज स्थापित करने के लिए setuptools (या वितरित) कैसे कर सकता हूं क्या setup.py में स्रोत निर्भरताओं को निर्दिष्ट (संपादन योग्य) निर्दिष्ट करना संभव है जो स्थानीय फ़ाइल सिस्टम पर रहने के लिए जाने जाते हैं?मैं स्थानीय फाइल सिस्टम

projects 
    utils 
    setup.py 
    ... 
    app1 
    setup.py 
    ... # app1 files depend on ../utils 
    app2 
    setup.py 
    ... # app2 files depend on ../utils 

निम्न कमांड को देखते हुए:

निम्नलिखित निर्देशिका संरचना है, जो सभी के लिए एक एकल VCS भंडार में रहती है पर विचार करें

cd projects 
mkvirtualenv app1 
pip install -e app1 

मैं APP1 के लिए सभी निर्भरता करना चाहते हैं "utils" सहित स्थापित, जो एक "संपादन योग्य" निर्भरता है। इसी प्रकार, अगर मैंने एप 2 के लिए भी ऐसा किया है।

मैंने install_requires और dependency_links में सभी लाभों के साथ खेलने का प्रयास नहीं किया है। मैं src+file://../utils जैसे एक निर्भरता लिंक यूआरएल का उपयोग करना चाहता हूं, जो सेटअपtools को बताएगा कि इस सापेक्ष पथ पर पैकेज के लिए स्रोत फ़ाइल सिस्टम पर है। क्या इसे करने का कोई तरीका है?

+0

यह कुछ मदद की हो सकती है: http://packages.python.org/distribute/setuptools.html#dependencies-that-aren-t-in-pypi –

+0

धन्यवाद, रोब। मैंने प्रश्न पूछने से पहले उस पृष्ठ की व्यापक रूप से समीक्षा की। पृष्ठ में यूआरएल की दो श्रेणियां सूचीबद्ध हैं: (1) प्रत्यक्ष डाउनलोड यूआरएल, और (2) वेब पेजों के यूआरएल जिनमें सीधे डाउनलोड लिंक होते हैं। मैं उम्मीद कर रहा था कि मेरा मुद्दा पहली श्रेणी में आ जाएगा, लेकिन मैं यह नहीं समझ सकता कि यूआरएल कैसे बनाया जाए। – millerdev

+4

मैंने सापेक्ष 'फ़ाइल का समर्थन करने के लिए एक [पैच को पाइप] (https://github.com/pypa/pip/pull/719) सबमिट किया:' dependency_links' में URL, जो मेरी समस्या हल करता है। उम्मीद है कि यह जल्द ही विलय हो जाएगा। – millerdev

उत्तर

0

जब मैं परियोजनाओं के एक सेट के साथ काम करना चाहता हूं, तो मैं उन सभी को /setup.py develop का उपयोग करके इंस्टॉल करता हूं।

यदि मैं गलती से या बाद में एक पाइप-स्थापित मॉड्यूल संपादन योग्य बनाना चाहता हूं, तो मैं स्रोत को क्लोन करता हूं, और मौजूदा पर प्रतिस्थापित करने के लिए python setup.py develop भी करता हूं।

बस यह सुनिश्चित करने के लिए, मैं वर्चुअलनव के साइट-पैकेज और पैकेज में संदर्भ मिटा देता हूं।

2

मुझे एक समान समस्या थी जहां मुझे एक भाई फ़ोल्डर में मॉड्यूल पर निर्भर रहने की आवश्यकता थी। मैं के साथ

pip install -r requirements.txt 

requirements.txt पर https://caremad.io/2013/07/setup-vs-requirement/

मैं फ़ाइल मैं चाहता था, के लिए विशेष रूप से उल्लेख करने के लिए requirements.txt समाप्त ठोकर और फिर सब कुछ स्थापित करने के बाद एक समाधान खोजने के लिए सक्षम था

-e ../utils                                          
-e . 

और setup.py में मेरी अन्य सभी निर्भरताएं हैं, जिनमें यूटिल शामिल हैं। जब पीपी ऐप 1 को स्थापित करने का प्रयास करता है, तो यह महसूस करता है कि यूटिल निर्भरता पहले ही भर चुकी है, और अन्य आवश्यकताओं को स्थापित करते समय इसे पार कर जाती है।

+0

guarant.txt में सापेक्ष पथ निर्देशिका में प्रवेश करने और कमांड निष्पादित करने के मामले में काम करता है ... मूल निर्देशिका में एक ही कमांड निष्पादित करना काम नहीं करेगा। पीआईपी आवश्यकताओं.txt फ़ाइल के लिए सापेक्ष पथ विनिर्देश के साथ समस्याएं हैं https://github.com/pypa/pip/issues/3772 – infinityLoop

संबंधित मुद्दे