2013-08-05 4 views
24

हम कई स्वयं अजगर संकुल है और https://pypi.python.org/simple/बिना दर्पण के स्थानीय स्थानीय पीपीआई रिपोजिटरी इंडेक्स कैसे बनाएं?

यह भंडार मैं केवल सुरक्षा कारणों की वजह से किसी भी दर्पण के बिना स्थानीय के लिए बनाना चाहते हैं की तरह सरल इंटरफ़ेस का उपयोग कर उनके लिए स्थानीय pypi भंडार बनाना चाहते हैं, और यह अपाचे के तहत रखा जाएगा नियंत्रण

कमांड pypimirror दिखने के बाद एक बार शुरू किया जाना चाहिए, जिसे दर्पण करने की आवश्यकता है।

मैं स्थानीय पायथन पैकेज के आधार पर पीपीआई सरल सूचकांक कैसे उत्पन्न कर सकता हूं।

इसके लिए कोई अन्य सरल स्क्रिप्ट?

+1

संभावित डुप्लिकेट [पैकेज के कस्टम सेट के साथ एक स्थानीय पीईपीआई सर्वर सेट अप करना] [http://stackoverflow.com/questions/14674873/setting-up-a-local-pypi-server-with- कस्टम-set- ऑफ-पैकेज) –

+2

संभावित डुप्लिकेट [कैसे अपना खुद का पाइप रोल करें?] (http://stackoverflow.com/questions/1235331/how-to-roll-my-own-pypi) – aquavitae

उत्तर

15

जब से तुम यहाँ उत्तर देने को कहा:

pip2pi पर एक नजर डालें, तो यह होना करने के लिए आप के लिए वास्तव में क्या देख रहे हैं लगता है।

+0

यह मेरे मामले –

+2

के लिए संभालने का सबसे आसान तरीका है ऐसा लगता है कि 'pip2pi' सार्वजनिक पैकेजों के लिए है जो पहले से ही पीपीपीआई पर हैं, क्या यह सही है? मैंने सोचा कि मूल सवाल घर में विकसित संकुल के लिए एक भंडार बनाने के बारे में था। –

3

यदि आप simplepypi चलाने के बारे में बात कर रहे हैं तो आपके पास पैकेज जोड़ने और उन्हें सेवा देने के लिए आपका सर्वर होगा। प्रलेखन के शब्दों में:

- Running this on the setup.py of your favorite package: 

    python setup.py sdist upload -r local 

आप आप जल्दी से संकुल/निर्देशिका में से प्रत्येक में setup.py के लिए फ़िल्टर कर सकते हैं अपने स्थानीय साइट-संकुल निर्देशिका पर या तो os.walk या glob.glob उपयोग किया है तो और ऊपर आह्वान उन पर।

यदि आपको केवल .html सूची के साथ पूरा tar.gz फ़ाइलों की निर्देशिका बनाने की आवश्यकता है तो आप अपनी साइट-पैकेज निर्देशिका के शीर्ष स्तर पर glob.glob का उपयोग कर सकते हैं - tar.gz प्रत्येक निर्देशिका बदले में और परिणामी फ़ाइल नाम को एक सूची में जोड़ें - फिर आप उस सूची से अपना index.html उत्पन्न कर सकते हैं।

आप इस के लिए template इंजन की एक बड़ी संख्या में से किसी का उपयोग करें या यह अपने आप उत्पन्न कर सकते हैं:

import glob 
filelist = glob.glob("*.tar.gz") 
tags = ['<A href="file:Where/%s">%s</A>' % (s,s) for s in tags] 
head = """<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> 
<HTML> 
<HEAD> 
<TITLE></TITLE> 
<META NAME="Generator" CONTENT="Python Script"> 
<META NAME="Keywords" CONTENT="Cheeseshop"> 
<META NAME="Description" CONTENT="List of local python packages"> 
</HEAD> 

<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#FF0000" VLINK="#800000" ALINK="#FF00FF" BACKGROUND="?"> 
""" 
tail = """</BODY></HTML>""" 
tags.insert(0,head) 
tags.append(tail) 
page = "\n".join(tags) 

तब सहेजने या आपको पृष्ठ दिखाती हैं।

+0

यह एक स्थानीय पीपीआई सर्वर की मांग करता है, जो मैं टालना चाहता हूँ। –

5

दर्पण के बारे में कुछ खास नहीं है, और आप इसे सेट अप करने के लिए mod_rewrite का उपयोग कर सकते हैं।

  1. अपने पैकेज को किसी URL में मैप किए गए निर्देशिका में डंप करें। यहां मैं /url/to/my/pypi/ का उपयोग कर रहा हूं। फ़ोल्डर पदानुक्रम /foo/bar/simple/[name of package]/[name of tarball]

  2. निम्नलिखित में .htaccess या उस निर्देशिका के लिए वैश्विक कॉन्फ़िगरेशन होना चाहिए जहां आप संकुल हैं।

    Options +Indexes 
    
    RewriteEngine On 
    
    RewriteRule ^/robots.txt - [L] 
    RewriteRule ^/icons/.* - [L] 
    RewriteRule ^/index\..* - [L] 
    
    RewriteCond /foo/bar/simple/ !-f 
    RewriteCond /foo/bar/simple/ !-d 
    RewriteRule ^/(.*)/?$ http://pypi.python.org/ [R,L] 
    
  3. अद्यतन अपने ~/.pip/pip.conf नए भंडार को इंगित करने के लिए::

    [global] 
    index-url = http://localhost/url/to/my/pypi/ 
    

    या आदेश पंक्ति पर -i http://localhost/url/to/my/pypi/ विकल्प का उपयोग लाइनों के अंतिम ब्लॉक वापस वैश्विक pypi सूचकांक करने के लिए गिरावट है।

+0

आप अनुरोध किए गए प्रश्न के रूप में केवल "स्थानीय केवल" के लिए चरण # 2 के "विकल्प + अनुक्रमणिका" भाग ही करेंगे। लेकिन उन चीजों के लिए पारदर्शी रूप से पिपी पर रीडायरेक्ट करना जो स्थानीय नहीं हैं, भी उपयोगी है। :) – dannysauer

18

हमें मेरी कंपनी में भी इसी तरह की आवश्यकता थी। असल में हम "बंद स्रोत" पैकेज को किसी इंडेक्स में कैसे अपलोड कर सकते हैं जबकि उन्हें इंस्टॉल करने में सक्षम होने के नाते वे पीपीपीआई पर थे?

हमने devpi नामक एक प्रोजेक्ट प्रायोजित किया है जो एक पीपीपीआई कैश के रूप में कार्य करता है (पीईपीआई से आपके द्वारा उपयोग किए जाने वाले पैकेज आपके सर्वर पर कैश किए जाएंगे) साथ ही एक शक्तिशाली और तेज़ इंडेक्स सर्वर भी होंगे। दस्तावेज http://doc.devpi.net/latest/ पर उपलब्ध है।

रोडमैप पर अगला बहु भौगोलिक तैनाती के लिए प्रतिबिंबित है। अपनी मशीन पर टायरों को लात मारने में लगभग 5 मिनट लगते हैं (त्वरित प्रारंभ मार्गदर्शिका देखें)। अंत में devpi दोनों पाइप और easy_install के साथ संगत है (यानी आपको अपनी मशीन पर स्थापित devpi क्लाइंट की आवश्यकता नहीं है)।

इस सहायता की आशा करें।

+1

मेरे साधारण मामले के लिए थोड़ा ओवरकिल, लेकिन मैं इसे वोट देता हूं क्योंकि यह काफी स्थिर और उपयोग में आसान दिखता है। –

+2

devpi वही है जो मैं खोज रहा था। यह एक पीपीआई सर्वर के रूप में कार्य करता है, और आप संकुल के प्रबंधन के लिए डिफ़ॉल्ट 'पीपी' कमांड का उपयोग कर सकते हैं। सेटअप करने में आसान और उपयोग में आसान है। वर्चुअल वातावरण में उपयोग के लिए, पोस्ट (डी) सक्रिय हुक में डिमन को प्रारंभ/बंद किया जा सकता है। – bouke

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