2013-02-06 42 views
6

के साथ काम करने के लिए पाइप प्राप्त करें मैं एक अजगर ऐप लिख रहा हूं जो विकास कारणों से एक जिथब रिपोजिटरी (कभी पीपीआई में) पर होस्ट नहीं किया जाता है।गिट और गीथब रिपोजिटरी

चलें उन्हें फोन:

  • अनुप्रयोग लिखा जा रहा: AppA
  • अनुप्रयोग GitHub में: AppB

अनुप्रयोग एक में, setup.py की तरह है:

# coding=utf-8 
import sys 
try: 
    from setuptools import setup, find_packages 
except ImportError: 
    import distribute_setup 
    distribute_setup.use_setuptools() 
    from setuptools import setup, find_packages 

setup(
    ... 
    install_requires=[ 
     # other requirements that install correctly 
     'app_b==0.1.1' 
    ], 
    dependency_links=[ 
     'git+https://github.com/user/[email protected]#egg=app_b-0.1.1' 
    ] 
) 

अब AppAJenkins CI द्वारा बनाया जा रहा है हर धक्का और मैं की वजह से अगले त्रुटि फेंक दिया जाता है एक विफलता मिलती है:

error: Download error for git+https://github.com/user/[email protected]: unknown url type: git+https 

मजेदार बात यह मेरे कंप्यूटर पर पूरी तरह से काम करता है, कि यह केवल जेनकींस में होता है। मैंने दोनों अन्य एसएसएच यूआरएल की कोशिश की जो गिथब देता है और जिन्हें डाउनलोड के लिए भी नहीं माना जाता है।

अब, अप्पा, एक परियोजना भी जेनकींस द्वारा बनाया जा रहा की आवश्यकताओं फ़ाइल में शामिल किया जाता है ताकि pip install AppApip install AppB के माध्यम से मैन्युअल निर्भरता स्थापित करने के लिए एक विकल्प नहीं है, निर्भरता स्वचालित रूप से requirements.txt में शामिल किए जाने से स्थापित कर रहे हैं।

क्या जिथब यूआरएल के साथ पीआईपी और गिट बनाने का कोई तरीका है?

किसी भी मदद की बहुत सराहना की जाएगी :)

अग्रिम धन्यवाद!

+0

पर एक नज़र डालें क्या आप वाकई जेनकींस पिप का उपयोग करता है:

आपका dependency_links प्रविष्टि शायद की तरह लग रहा है? यदि हां, तो क्या यह एक संस्करण है जो इस सुविधा का समर्थन करता है? – wRAR

+0

@ Gerard आपके जेनकिंस बॉक्स का उपयोग करने वाले पाइप का कौन सा संस्करण उपयोग करता है? 'पीआईपी - वर्जन 'आपको वह जानकारी देनी चाहिए। कफ से बाहर, यह पूर्व-0.8.2 जैसा दिखता है, जिसने https योजना का समर्थन नहीं किया। – jszakmeister

उत्तर

12

समस्या pip के साथ नहीं है, setuptools के साथ है। setup() कॉल के लिए जिम्मेदार setuptools पैकेज (setuptools या प्रोजेक्ट वितरित) है।

न तो setuptools या distribute उस तरह के यूआरएल को समझते हैं, वे टैरबॉल/ज़िप फ़ाइलों को समझते हैं।

गिथब के डाउनलोड यूआरएल को इंगित करने का प्रयास करें - आमतौर पर एक ज़िप फ़ाइल।

dependency_links=[ 
    'https://github.com/user/app_b/archive/0.1.1.zip#egg=app_b-0.1.1' 
] 

अधिक जानकारी के लिए http://peak.telecommunity.com/DevCenter/setuptools#dependencies-that-aren-t-in-pypi

+0

इस उत्तर के अतिरिक्त, मेरे मामले में पैकेज को कभी भी स्थापित नहीं किया जा सकता है यदि 'आवश्यक' के भीतर ऐसा पैकेज 'पैकेज == संस्करण' रूप में था, लेकिन यह 'पैकेज' का उपयोग करके काम करता था; यानी, संस्करण के बिना केवल पैकेज नाम है – Gerard

2

pip documentation से -

pip currently supports cloning over git, git+http and git+ssh: 

git+git://git.myproject.org/MyProject#egg=MyProject 
git+http://git.myproject.org/MyProject#egg=MyProject 
git+ssh://git.myproject.org/MyProject#egg=MyProject 

git+git साथ git+https की जगह की कोशिश करो।

+0

क्षमा करें यह काम नहीं किया। यह स्थानीय रूप से काम करता है लेकिन जेनकींस के भीतर नहीं :(मैं कुछ समझने की कोशिश कर रहा हूं। धन्यवाद, प्रलेखन के बावजूद – Gerard

+0

'गिट + https' समर्थित होना चाहिए।कम से कम [स्रोत] के अनुसार (https://github.com/pypa/pip/blob/develop/pip/vcs/git.py#L17)। यह पीपी 0.8.2 में वापस सभी तरह से दिखाई दिया। – jszakmeister

+0

मैं बस यह कह रहा हूं कि त्रुटि क्या दिखा रही है - 'अज्ञात यूआरएल प्रकार: गिट + https'। पीआईपी का कुछ पुराना संस्करण होना चाहिए। –