2017-02-11 11 views
12

मैं अपना खुद का पैकेज बनाने की कोशिश कर रहा हूं। पैकेज बहुत आसान है, इसमें एक पायथन मॉड्यूल और एक बैश स्क्रिप्ट है। मैं दोनों को /usr/local/bin के तहत स्थापित किया जाना चाहिए ताकि उन्हें सीधे निष्पादित किया जा सके।पाइप exec_points को execables के रूप में स्थापित नहीं कर रहा है

from setuptools import setup 

setup(
    name='deploy', 
    . 
    . 
    . 
    install_requires=['pyyaml', 'cot', 'jsonschema'], 
    entry_points={ 
     'console_scripts': [ 
      'cloud_config = cloud_config:main', 
     ], 
    }, 
    scripts=['deploy.sh'], 
) 

यहाँ pip install ... के उत्पादन से अंश है::

यहाँ मेरी setup.py फ़ाइल है

running install_scripts 
    copying build/scripts-2.7/deploy.sh -> /usr/local/lib/python2.7.10/bin 
    changing mode of /usr/local/lib/python2.7.10/bin/deploy.sh to 755 
    Installing cloud_config script to /usr/local/lib/python2.7.10/bin 
इस के साथ

, मैं या तो अजगर या सीधे बैश स्क्रिप्ट आह्वान करने में सक्षम नहीं हूँ।

कोई विचार?

संपादित करें: मैं Ubuntu 16.04.1 मशीन पर चला रहा हूं। बस Ubuntu 14.04 मशीन पर एक ही पैकेज को स्थापित करने का प्रयास किया गया और व्यवहार अपेक्षित है। cloud_config.py और deploy.sh दोनों /usr/local/bin पर स्थापित हो गए हैं और मैं सिस्टम पर कहीं से भी इनकार कर सकता हूं।

+2

उबंटू भारी पैच पैच; मुझे आश्चर्य नहीं है कि उन्होंने यहां व्यवहार भी बदल दिया है। –

+0

यह बेतुका @MartijnPieters है। एक पैकेज बनाने के बारे में कैसे जाता है जो सभी प्लेटफार्मों पर ठीक से स्थापित करता है? – ronakg

+0

मैंने अभी आपके 'setup.py' के आधार पर एक पैकेज बनाने की कोशिश की है और उबंटू 16.04 वाग्रेंट बॉक्स को साफ करने के लिए तैनात किया गया है - सभी ठीक काम करते हैं।यदि आप अधिक जानकारी प्रदान करेंगे तो यह समस्या को पुन: पेश करने में मदद कर सकता है। शायद संस्करणों के साथ कुछ? आप सेटअप के लिए किस संस्करण का उपयोग करते हैं? लक्ष्य मशीन पर पाइप और setuptools कौन सा हैं? – Timur

उत्तर

1

अंत में मैं इसे काम करने के लिए मिला। मुझे एपीटी द्वारा स्थापित पीआईपी पैकेज को हटाना पड़ा। https://pip.pypa.io/en/stable/installing/ -

sudo apt remove python-pip 

और उसके बाद फिर से अपनी वेबसाइट पर निर्देशों के अनुसार पिप स्थापित करें।

wget https://bootstrap.pypa.io/get-pip.py 
sudo python get-pip.py 

उबंटू के डिफ़ॉल्ट भंडार से पीआईपी की तरह लगता है कि पीपीआई द्वारा वितरित एक जैसा नहीं है।

0

प्रयास करें:

pip install --install-option="--prefix=$PREFIX_PATH" package_name 

उदा

pip install --install-option="--prefix=/usr/local/bin" pyFooBar 
+0

'प्रविष्टि_पॉइंट्स -> console_scripts' के अंतर्गत प्रविष्टियां नहीं हैं जिन्हें' पथ 'में स्थापित किया जाना चाहिए ताकि वे कहीं से भी कॉल करने योग्य हों? – ronakg

+0

पायथन पैकेजिंग के लिए इस दस्तावेज़ के अनुसार - http://python-packaging.readthedocs.io/en/latest/command-line-scripts.html – ronakg

2

दो विकल्प मैं सोच सकता हूं, पहले, जांचें कि पीआईपी सही जगह पर इशारा कर रहा है। तो कोशिश:

which python 

मेरा कहना है:

/usr/bin/python 

तुम्हारा, अलग हो को तदनुसार पथ बदल जाएगा तो यकीन है कि पथ ठीक से सेट किया गया है, तो:

export PATH=/usr/bin/python:${PATH} 

पुनर्स्थापित पाइप और फिर कोशिश करें। उसमें असफल होने पर एक समाधान के इस उदाहरण में पिप का उपयोग करें और कोशिश नहीं करने के लिए हो सकता है:

python setup.py install 

जो अपने डिफ़ॉल्ट अजगर पथ का उपयोग करेगा (रंज नहीं) और स्थापित करना चाहिए:

/usr/local/bin 
+0

मेरा भी '/ usr/bin/python' कहता है। क्या काम किया यह देखने के लिए नीचे मेरा जवाब देखें। मुझे अभी भी पता नहीं है कि क्यों डिफ़ॉल्ट पाइप काम नहीं करता है। – ronakg

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