2013-06-28 13 views
9

मैं निम्नलिखित कॉन्फ़िगर किया गया सेटअप के साथ एक पैकेज स्थापित करने की कोशिश कर रहा है से लिंक का उपयोग करने में असमर्थ:setuptools dependency_links

setup(
    packages=find_packages(), 
    include_package_data=True, 
    install_requires=[ 
     'Django==1.5.1', 
     'xhtml2pdf', 
    ], 
    dependency_links=[ 
     'https://github.com/chrisglass/xhtml2pdf/zipball/28d12fcaafc4c47b13f1f6f42c2bfb73f90cc947#egg=xhtml2pdf', 
    ], 
) 

हालांकि यह PyPi से XHTML2PDF पैकेज को स्थापित करता है, बजाय निर्दिष्ट लिंक का उपयोग करने का। उत्पादन के अनुसार (मैं भाग गया pip install -vvv package.tar.gz का उपयोग कर स्थापित), यह या तो (कोड में // 1 पर) लिंक से संस्करण पार्स नहीं कर सका, या मैं सही परियोजना का नाम (कोड में // 2 पर) निर्दिष्ट नहीं किया गया है:

Downloading/unpacking xhtml2pdf (from mypackage==1.3) 
    Getting page https://pypi.python.org/simple/xhtml2pdf/ 
    URLs to search for versions for xhtml2pdf (from mypackage==1.3): 
    * https://pypi.python.org/simple/xhtml2pdf/ 
    * https://github.com/chrisglass/xhtml2pdf/zipball/28d12fcaafc4c47b13f1f6f42c2bfb73f90cc947#egg=xhtml2pdf 
    Getting page https://github.com/chrisglass/xhtml2pdf/zipball/28d12fcaafc4c47b13f1f6f42c2bfb73f90cc947 
    Analyzing links from page https://pypi.python.org/simple/xhtml2pdf/ 
    Found link https://pypi.python.org/packages/source/x/xhtml2pdf/xhtml2pdf-0.0.1.tar.gz#md5=9f83a2bcb67858aca9e058761f3bea7b (from https://pypi.python.org/simple/xhtml2pdf/), version: 0.0.1 
    Found link https://pypi.python.org/packages/source/x/xhtml2pdf/xhtml2pdf-0.0.2.tar.gz#md5=d640ccb9470942fd2e6d3ae740c27dc1 (from https://pypi.python.org/simple/xhtml2pdf/), version: 0.0.2 
    Found link https://pypi.python.org/packages/source/x/xhtml2pdf/xhtml2pdf-0.0.1.zip#md5=4ad41c845735ae14da99085311d84c00 (from https://pypi.python.org/simple/xhtml2pdf/), version: 0.0.1 
    Found link https://pypi.python.org/packages/source/x/xhtml2pdf/xhtml2pdf-0.0.4.zip#md5=5f035cd6532bef99b7d35054caaa6ef7 (from https://pypi.python.org/simple/xhtml2pdf/), version: 0.0.4 
    Found link https://pypi.python.org/packages/source/x/xhtml2pdf/xhtml2pdf-0.0.3.zip#md5=32599c74f26f57ebd002765741ec64f7 (from https://pypi.python.org/simple/xhtml2pdf/), version: 0.0.3 
    Found link https://pypi.python.org/packages/source/x/xhtml2pdf/xhtml2pdf-0.0.2.zip#md5=4047a8234eb6b77591d526dcb1f60161 (from https://pypi.python.org/simple/xhtml2pdf/), version: 0.0.2 
    Found link https://pypi.python.org/packages/source/x/xhtml2pdf/xhtml2pdf-0.0.3.tar.gz#md5=13b0d6059b72c994473fddfa7a528451 (from https://pypi.python.org/simple/xhtml2pdf/), version: 0.0.3 
    Found link https://pypi.python.org/packages/source/x/xhtml2pdf/xhtml2pdf-0.0.5.zip#md5=8db99aae8536436a2b7b0b3987197b99 (from https://pypi.python.org/simple/xhtml2pdf/), version: 0.0.5 
    Found link https://pypi.python.org/packages/source/x/xhtml2pdf/xhtml2pdf-0.0.5.tar.gz#md5=1ef268b40c11bf966f7c6c5504299e3e (from https://pypi.python.org/simple/xhtml2pdf/), version: 0.0.5 
    Found link https://pypi.python.org/packages/source/x/xhtml2pdf/xhtml2pdf-0.0.4.tar.gz#md5=36b015a4e2918460711cbc5eebe026ce (from https://pypi.python.org/simple/xhtml2pdf/), version: 0.0.4 
    Analyzing links from page https://codeload.github.com/chrisglass/xhtml2pdf/legacy.zip/28d12fcaafc4c47b13f1f6f42c2bfb73f90cc947 
    Could not parse version from link: https://github.com/chrisglass/xhtml2pdf/zipball/28d12fcaafc4c47b13f1f6f42c2bfb73f90cc947#egg=xhtml2pdf // 1 
    Skipping link https://github.com/chrisglass/xhtml2pdf/zipball/28d12fcaafc4c47b13f1f6f42c2bfb73f90cc947#egg=xhtml2pdf; wrong project name (not xhtml2pdf) // 2 
    Using version 0.0.5 (newest of versions: 0.0.5, 0.0.5, 0.0.4, 0.0.4, 0.0.3, 0.0.3, 0.0.2, 0.0.2, 0.0.1, 0.0.1) 
    Downloading xhtml2pdf-0.0.5.zip (118kB): 
    Downloading from URL https://pypi.python.org/packages/source/x/xhtml2pdf/xhtml2pdf-0.0.5.zip#md5=8db99aae8536436a2b7b0b3987197b99 (from https://pypi.python.org/simple/xhtml2pdf/) 
...Downloading xhtml2pdf-0.0.5.zip (118kB): 118kB downloaded 

यदि मैं install_requires और dependency_links दोनों में पैकेज (xhtml2pdf-0.0.5) में संस्करण संख्या जोड़ता हूं तो यह गिट लिंक पाता है और उनके बारे में शिकायत नहीं करता है, लेकिन फिर भी पीपीपी से स्थापित करता है।

मैं थोड़ी देर के लिए उत्तर खोज रहा हूं, लेकिन समाधान ढूंढने में सक्षम नहीं हूं। मुझे गिट संस्करण की आवश्यकता है, क्योंकि यह ठीक करता है कि पीईपीआई संस्करण अभी तक नहीं है।

+0

संभावित डुप्लिकेट [मैं सेटअप स्रोत को किसी अन्य स्रोत से पैकेज इंस्टॉल कैसे कर सकता हूं जो कि समान संस्करण संख्या के साथ पीपीआई पर भी उपलब्ध है?] (Http://stackoverflow.com/questions/11032125/how-can-i-make -setuptools-install-a-package-from-another-source-thats-also-avai) –

+0

हां, यह एक डुप्लिकेट है [मैं एक और स्रोत से एक पैकेज स्थापित करने के लिए setuptools कैसे बना सकता हूं जो एक ही संस्करण के साथ पीपीआई पर भी उपलब्ध है संख्या?] (http://stackoverflow.com/questions/11032125/how-can-i-make-setuptools-install-a-package-from-another-source-thats-also-avai), जिसे मैंने पहले ही घोषित किया है जवाब मैंने अपने प्रश्न पर दिया। – Heyl1

उत्तर

15

ठीक है, इसलिए मैंने अपना खुद का प्रश्न हल किया (या हैक किया, इस पर निर्भर करता है कि आप इसे कैसे देखते हैं)।

कोड के साथ दो मुद्दे थे।

पहला मुद्दा यह था कि लिंक गलत था। हालांकि मैंने इसे कहीं और इस तरह स्वरूपित देखा है, यह मेरे लिए काम नहीं करेगा (चाहे setuptools mkvirtualenv mypackage का उपयोग कर रहे हों या mkvirtualenv --distribute mypackage वितरित करें)। मुझे लगा कि इसे अंत में ज़िप विस्तार की आवश्यकता है और गिथब पर पता चला है कि आप https://github.com/user/project/archive/commit.zip प्रारूप का उपयोग करके एक विशिष्ट प्रतिबद्धता डाउनलोड कर सकते हैं।

तब मुझे अभी भी समस्या थी, हालांकि यह अब लिंक को पहचान लेगा, फिर भी यह गीथूब संस्करण पर पीईपीआई संस्करण उठाएगा। इसका कारण यह है कि आखिरी प्रतिबद्धता (पीपीपीआई के रिलीज के बाद) गीथब पर अभी भी एक ही संस्करण संख्या है जो पीपीपीई के नवीनतम संस्करण के रूप में है। तो यह पता चला है कि यह सवाल वास्तव में How can I make setuptools install a package from another source that's also available on pypi with the same version number? का डुप्लिकेट है। बिल्कुल

install_requires=[], 
dependency_links=['https://github.com/chrisglass/xhtml2pdf/archive/28d12fcaafc4c47b13f1f6f42c2bfb73f90cc947.zip',], 

यह स्थापित नहीं किया xhtml2pdf: इसे हल करने की कोशिश करने के लिए मैं अपने setup.py (इनमें से कुछ काम कर के रूप में अन्य Stackoverflow सवाल में उल्लेख किया गया है) में निम्न सेटिंग्स की कोशिश की।

install_requires=['xhtml2pdf',], 
dependency_links=['https://github.com/chrisglass/xhtml2pdf/archive/28d12fcaafc4c47b13f1f6f42c2bfb73f90cc947.zip#egg=xhtml2pdf',], 

यह नवीनतम पायपी संस्करण (0.0.5) स्थापित किया गया।

install_requires=['xhtml2pdf==0.0.5',], 
dependency_links=['https://github.com/chrisglass/xhtml2pdf/archive/28d12fcaafc4c47b13f1f6f42c2bfb73f90cc947.zip#egg=xhtml2pdf-0.0.5',], 

यह PyPi में 0.0.5 संस्करण स्थापित। यह वास्तव में समझ में आता है कि सेटअप संख्या और वितरण जीथ्यूब संस्करण पर पीपीपी संस्करण का चयन करेगा यदि संस्करण संख्या समान है, क्योंकि पीईपीआई संस्करण अधिक स्थिर होना चाहिए।

install_requires=['xhtml2pdf==0.0.6',], 
dependency_links=['https://github.com/chrisglass/xhtml2pdf/archive/28d12fcaafc4c47b13f1f6f42c2bfb73f90cc947.zip#egg=xhtml2pdf-0.0.6',], 

यह Github से पैकेज डाउनलोड किया गया (क्योंकि संस्करण 0.0.6 PyPi पर मौजूद नहीं है), लेकिन समय यह शिकायत की कि संस्करणों से मेल नहीं खाती स्थापित करते हैं, आने संस्करण पैकेज में निर्दिष्ट वास्तव में है, क्योंकि 0.0.5।

install_requires=['xhtml2pdf<=0.0.6',], 
dependency_links=['https://github.com/chrisglass/xhtml2pdf/archive/28d12fcaafc4c47b13f1f6f42c2bfb73f90cc947.zip#egg=xhtml2pdf-0.0.6',], 

यह अंततः काम करता था। Setuptools (और वितरित) एहसास हुआ कि Github संस्करण नए होने चाहिए क्योंकि मैंने यही कहा था। और इंस्टॉल समय आओ, इस तथ्य के बारे में शिकायत नहीं की कि वास्तविक संस्करण 0.0 है।5 क्योंकि यह अभी भी आवश्यकताओं को पूरा करता है।

आप इसे एक हैक पर विचार कर सकते हैं। मैं इस समाधान से पूरी तरह खुश नहीं हूं। लेकिन मेरे पास समय सीमा भी है और यह काम करता है। चेतावनी का एक शब्द: संस्करण 0.0.6 वास्तव में जारी होने पर मुझे समस्याएं शुरू हो जाएंगी। मैं अपनी निर्भरताओं को सही ढंग से पिन करना चाहता हूं, इसलिए जब मैं पुनर्स्थापित कर रहा हूं, तो मैं भविष्य में मुद्दों में नहीं चलता हूं, और यह एक उचित पिन नहीं है। हालांकि मुझे लगता है कि आप इस दस्तावेज़ का उपयोग कर संस्करण संख्या के साथ चारों ओर झुका सकते हैं: https://pythonhosted.org/setuptools/setuptools.html#specifying-your-project-s-version। कुंजी यह है कि संस्करण 0.0.5 से अधिक होना चाहिए (लेकिन यह भी एक संख्या (वैकल्पिक वर्णों के साथ) है कि आप भविष्य में पीईपीआई में रिलीज के रूप में दिखाई देने की उम्मीद नहीं करेंगे (और जाहिर है कि इससे कम अगली रिलीज संख्या सबसे अधिक संभावना होगी (मेरे मामले में 0.0.6))।

मुझे आशा है कि यह किसी और के लिए सहायक होगा :)।

नोट: मैं requirements.txt फ़ाइल का उपयोग करता हूं जो आवश्यकताओं को निकालने के लिए setup.py फ़ाइल द्वारा संसाधित किया जाता है। जब आप का उपयोग अपने requirements.txt फ़ाइल में करते हैं तो यह अभी भी pip install -r requirements.txt का उपयोग करके ठीक इंस्टॉल करेगा।

+0

यह तोड़ने के लिए बाध्य है हालांकि जब अपस्ट्रीम अगले संस्करण में वृद्धि के लिए भी चलता है? –

+2

हां, मैंने उल्लेख किया है कि सावधानी के एक शब्द के साथ अंतिम-लेकिन-दो पैराग्राफ में: "चेतावनी का एक शब्द: संस्करण 0.0.6 वास्तव में रिलीज़ होने पर मुझे समस्याएं शुरू हो जाएंगी। मैं अपनी निर्भरताओं को ठीक से पिन करना चाहता हूं, इसलिए जब मैं पुनर्स्थापित कर रहा हूं, तो मैं भविष्य में मुद्दों में नहीं चलता हूं, और यह एक उचित पिन नहीं है ... " – Heyl1

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