python - सेटअप सेटअप में निर्भरता_लिंक्स को अनदेखा करता है




pip setuptools (3)

कुछ मुद्दों पर कुछ नोट्स जो मुझे मिले, विशेष रूप से निजी रिपॉजिट से स्थापित करने के लिए।

पाइप और सेटपूल से स्थापित करने के कुछ सूक्ष्म अंतर हैं; लेकिन इस तरह से दोनों के लिए काम करना चाहिए।

from setuptools import setup
import os
# get deploy key from https://help.github.com/articles/git-automation-with-oauth-tokens/
github_token = os.environ['GITHUB_TOKEN']

setup(
    # ...
    install_requires='package',
    dependency_links = [
    'git+https://{github_token}@github.com/user/{package}.git/@{version}#egg={package}-0'
        .format(github_token=github_token, package=package, version=master)
        ]

नोटों की एक जोड़ी यहाँ:

  • निजी रेपो के लिए, आपको गिटहब के साथ प्रमाणित करने की आवश्यकता है; मैंने जो सबसे आसान तरीका पाया, वह यह है कि एक ऊऊथ टोकन बनाया जाए, जो कि आपके वातावरण में गिराए, और फिर उसे URL के साथ शामिल करें
  • आपको लिंक के अंत में कुछ संस्करण संख्या (यहां 0 ) शामिल करने की आवश्यकता है, भले ही PyPI पर कोई पैकेज न हो। इसके लिए वास्तविक संख्या होनी चाहिए, शब्द नहीं।
  • आपको git+ साथ प्रस्तावना करने की आवश्यकता है, यह बताने के लिए कि किसी z / / बेसबॉल पर इंगित करने के बजाय, इसे सेट करना है
  • version एक शाखा, एक टैग या एक प्रतिबद्ध हैश हो सकता है
  • यदि आपको --process-dependency-links से इंस्टॉल करना है तो आपको --process-dependency-links आपूर्ति करने की आवश्यकता है

मेरे सेटअप में मेरे पास dependency_links है:

...
dependency_links = ['http://github.com/robot-republic/python-s3/tarball/master.tar.gz#egg=python-s3'],
...

लेकिन यह काम नहीं करता है। हालाँकि install_requires ठीक काम करता है। शायद सेटअप के लिए आवश्यक के रूप में गिट रेपो स्थापित करने के लिए एक और तरीका है?


चूंकि पाइप संस्करण 18.1 PEP 508 URL समर्थित है। इसका मतलब है कि आपको अब किसी भी निर्भर डिपेंडेंसी_लिंक की जरूरत नहीं है। आप इसके बजाय सीधे install_requires सूची में निर्भरता लिखते हैं। @Chad से उदाहरण इस तरह दिखता है:

setup(
    name='yourpackage',
    version='1.7.5',
    packages=[],
    url='',
    license='',
    author='',
    author_email='',
    description='',
    install_requires=[
        'somepackage==1.2.0',
        'repo==1.0.0 @ https://github.com/user/archive/master.zip#egg=repo-1.0.0',
        'anotherpackage==4.2.1'
    ],
)

अपना पैकेज स्थापित करने के लिए आप बस लिख सकते हैं:

pip install yourpackage

(बिना --process- निर्भरता-लिंक)


इस उत्तर में मदद करनी चाहिए। संक्षेप में, आपको #egg=python-s3 लिए संस्करण (या "देव") निर्दिष्ट करने की आवश्यकता है ताकि यह #egg=python-s3-1.0.0

@ सेरीन की टिप्पणी के आधार पर अपडेट:

  • पिप 1.5.x में निर्भरता-लिंक प्रसंस्करण को सक्षम करने के लिए एक झंडा है: --process-dependency-links । मैंने इसका परीक्षण नहीं किया है क्योंकि मैं नीचे दिए गए बिंदु से सहमत हूं।
  • यह चर्चा इंगित करती है कि पाइप के लिए निर्भरता-लिंक का उपयोग करना एक बुरा अभ्यास है। हालांकि इस सुविधा को पदावनत करने के लिए सूचीबद्ध किया गया था, यह अब नहीं है। निजी पैकेज के लिए वैध उपयोग का मामला है।




easy-install