2016-03-09 11 views
24

से निष्पादन योग्य नहीं मिला है मै मैक ओएस एक्स योसामेट, संस्करण 10.10.3 पर काम कर रहा हूं।पीआईपी पैकेज सफलतापूर्वक स्थापित करता है, लेकिन कमांड लाइन

मैं python2.7 और पिप macport का उपयोग कर स्थापित के रूप में http://johnlaudun.org/20150512-installing-and-setting-pip-with-macports/

में किया मैं सफलतापूर्वक पैकेज इंस्टॉल और उन्हें अपने अजगर पर्यावरण और अजगर स्क्रिप्ट के अंदर आयात कर सकते हैं। हालांकि किसी पैकेज के साथ जुड़े किसी निष्पादन योग्य को टर्मिनल में कमांड लाइन से बुलाया जा सकता है।

क्या किसी को पता है कि क्या गलत हो सकता है? (अधिक विवरण नीचे)

उदाहरण के लिए एक पैकेज "rosdep" कहा जाता है की स्थापना करते समय के रूप में http://wiki.ros.org/jade/Installation/Source

में निर्देश दिए मैं चला सकते हैं: sudo pip install -U rosdep जो त्रुटियों के बिना स्थापित करता है और इसी फ़ाइलों /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages

हालांकि में स्थित हैं अगर मैं दौड़ने की कोशिश करता हूं: sudo rosdep init, यह एक त्रुटि देता है: "sudo: rosdep: command not found"

यह पैकेज विशिष्ट त्रुटि नहीं है। मैं इसे अपने कंप्यूटर पर पाइप का उपयोग करके स्थापित किसी भी पैकेज के लिए मिलता हूं। मैंने

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages 

को मेरे $PATH में जोड़ने का भी प्रयास किया। लेकिन निष्पादन योग्य कमांड लाइन पर नहीं पाए जाते हैं, भले ही संकुल पूरी तरह से अजगर के भीतर से काम करते हैं।

+0

किसी भी virtualenv शामिल? –

+0

नहीं, कोई वर्चुअलenv शामिल नहीं है। –

+0

जब आप सूडो करते हैं, तो आप रूट उपयोगकर्ता के $ PATH पर स्विच करते हैं, बस सुनिश्चित करें कि उसका पथ अपडेट किया गया है, न कि आपके पैथ –

उत्तर

11

जाँच अपने $ पथ

tox है एक कमांड लाइन मोड:

audrey:tests jluc$ pip list | grep tox 
tox (2.3.1) 

यह कहाँ है?

audrey:tests jluc$ which tox 
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/tox 

और मेरे $ पाथ में क्या है?

audrey:tests jluc$ echo $PATH 
/opt/chefdk/bin:/opt/chefdk/embedded/bin:/opt/local/bin:..../opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin... 

सूचना /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin? यही कारण है कि मेरी पाइप-स्थापित सामग्री

अब यह देखने के लिए कि चीजें पाइथन से कहां हैं, यह देखने का प्रयास करें (के लिए rosdep विकल्प)।

$python 
>>> import tox 
>>> tox.__file__ 

कि बाहर प्रिंट:

'/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/tox/__init__.pyc' 

अब, सीडी सही ऊपर में lib ऊपर निर्देशिका के लिए। क्या आप बिन निर्देशिका देख रहे हैं? क्या आप उस बिन में rosdep देख रहे हैं? यदि ऐसा है तो bin को अपने $ PATH में जोड़ने का प्रयास करें।

audrey:2.7 jluc$ cd /opt/local/Library/Frameworks/Python.framework/Versions/2.7 
audrey:2.7 jluc$ ls -1 

उत्पादन:

Headers 
Python 
Resources 
bin 
include 
lib 
man 
share 
+0

उत्तर के लिए धन्यवाद जेएल, लेकिन यह मुख्य रूप से मेरी समस्या है। मेरे उदाहरण ऐप रोस्डेप के लिए, जब मैंने आपके जैसा किया, तो आउटपुट प्राप्त हुआ है: पीआईपी सूची | grep rosdep rosdep (0.11.4) जो (कोई आउटपुट नहीं) rosdep, कमांड लाइन कुछ भी वापस नहीं लौटाती –

+1

** जो ** 'rosdep' वापस नहीं लौट रही है, आपकी समस्या के अनुरूप है। मेरा मुद्दा यह है कि आपको यह पता लगाना होगा कि 'rosdep' कहां स्थापित है और $ PATH कैसा दिखता है। –

+0

धन्यवाद, मैंने अपनी बाइनरी को /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin में भी इंस्टॉल किया था। पाथ में जोड़ा गया और अब यह काम कर रहा है। धन्यवाद, मुझे बाइनरी ढूंढने में परेशानी हो रही थी क्योंकि कोई आउटपुट नहीं दे रहा था। –

17

MacOS पर आप अपने $ पथ को /Users/<you>/Library/Python/2.7/bin/ जोड़ने की जरूरत है।

अपने .bash_profile

export PATH="/Users/<you>/Library/Python/2.7/bin:$PATH" 

वहीं पिप निष्पादनयोग्य स्थापित करता है करने के लिए इस जोड़ें।

+4

वह स्थान जहां पाइप इंस्टॉल करता है, इस पर निर्भर करता है कि आपने पाइथन कैसे स्थापित किया है, मैकोज़ में पाइथन स्थापित करने के कई तरीके हैं, जैसे मैकपोर्ट, होमब्रू और सिस्टम डिफॉल्ट। पाइथन के किस संस्करण का उपयोग किया जा रहा है, इस पर निर्भर करता है कि आपके पास पाइप के लिए अलग-अलग स्थान होंगे।पाइप और पायथन स्थित हैं, यह जानने का एक आसान तरीका टर्मिनल में "कौन सा पायथन" का उपयोग करना होगा और फिर $ PATH में उपयुक्त स्थान जोड़ना होगा। –

+0

मेरा दिन बचाया धन्यवाद! – LoveMeow

1

यदि आप --user (उदा। pip3.6 install --user tmuxp), it is possible to get the platform-specific user install directory from Python itself using the site module का उपयोग कर स्थापित कर रहे हैं। उदाहरण के लिए, MacOS पर के लिए:

$ python2.7 -m site --user-base 
/Users/alexp/Library/Python/2.7 

इस के लिए /bin जोड़कर, अब हम पथ जहाँ पैकेज निष्पादनयोग्य स्थापित किया जाएगा है। आउटपुट के आधार पर हम आपके शैल की आरसी फाइल में गतिशील रूप से पैथ को पॉप्युलेट कर सकते हैं; मैं पार्टी का उपयोग कर रहा है, लेकिन किसी भी भाग्य के साथ इस पोर्टेबल है:

# Add Python bin directories to path 
python3.6 -m site &> /dev/null && PATH="$PATH:`python3.6 -m site --user-base`/bin" 
python2.7 -m site &> /dev/null && PATH="$PATH:`python2.7 -m site --user-base`/bin" 

मैं सटीक अजगर संस्करणों का उपयोग निष्पादनयोग्य बस "गायब" जब अजगर एक छोटी सी संस्करण को अपग्रेड किए जाने, उदा की संभावना को कम करने के लिए 3.5 से 3.6 तक। वे गायब हो जाएंगे, जैसा कि ऊपर देखा जा सकता है, उपयोगकर्ता स्थापना पथ में पायथन संस्करण शामिल हो सकता है। इसलिए python3 3.5 या 3.6 इंगित कर सकता है, python3.6 हमेशा 3.6 पर इंगित करेगा। आगे के पैकेज स्थापित करते समय इसे ध्यान में रखा जाना चाहिए, उदा। pip3 पर pip3.6 का उपयोग करें।

आप संकुल गायब होने का विचार कोई आपत्ति नहीं है, तो आप python2 और python3 बजाय का उपयोग कर सकते हैं:

# Add Python bin directories to path 
# Note: When Python is upgraded, packages may need to be re-installed 
#  or Python versions managed. 
python3 -m site &> /dev/null && PATH="$PATH:`python3 -m site --user-base`/bin" 
python2 -m site &> /dev/null && PATH="$PATH:`python2 -m site --user-base`/bin" 
संबंधित मुद्दे