2013-04-28 6 views
5

मैं ~/.local में स्थानीय रूप से पैकेज स्थापित करने के लिए पीआईपी का उपयोग करने की कोशिश कर रहा हूं। समस्या यह है कि पैकेज (पुराने संस्करण में) पहले से ही सिस्टम पर वैश्विक स्तर पर उपलब्ध है। भले ही वैश्विक पायथन पैकेज निर्देशिका मेरे PYTHONPATH में है, फिर भी पीआईपी स्थापित करने से इंकार कर रही है, यह सोचकर कि पैकेज की आवश्यकता पूरी हो गई है। यह समस्या यहाँ वर्णित करने के लिए समान है, सिवाय मैं sudo उपयोग नहीं कर रहा तो समाधान लागू नहीं होता,:,संतुष्ट वैश्विक आवश्यकताओं के बावजूद स्थानीय स्तर पर पैकेज स्थापित करने के लिए पीआईपी का उपयोग करके

Requirement already satisfied (use --upgrade to upgrade): numpy in /usr/local/lib/python2.7/dist-packages/numpy-1.6.2-py2.7-linux-x86_64.egg 

हालांकि: pip - Requirement already satisfied?

अगर मैं कार्य करें:

pip install --user numpy 

इसे कहते हैं /usr/local/lib/... मेरे PYTHONPATH में नहीं है। PYTHONPATH में एकमात्र चीज ~/.local है।

अगर मैं करने की कोशिश:

pip install --user --upgrade numpy 

यह numpy डाउनलोड करता है और यह संकलित, और फिर सोचता है कि मैं --उपयोगकर्ता ध्वज के बावजूद स्थापित एक वैश्विक कर रहा हूँ और मैं:

Installing collected packages: numpy 
    Found existing installation: numpy 1.6.2 
    Uninstalling numpy: 
Exception: 
Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/basecommand.py", line 107, in main 
    status = self.run(options, args) 
    File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/commands/install.py", line 261, in run 
    requirement_set.install(install_options, global_options) 
    File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/req.py", line 1162, in install 
    requirement.uninstall(auto_confirm=True) 
    File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/req.py", line 495, in uninstall 
    paths_to_remove.remove(auto_confirm) 
    File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/req.py", line 1492, in remove 
    renames(path, new_path) 
    File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/util.py", line 273, in renames 
    shutil.move(old, new) 
    File "/usr/lib/python2.7/shutil.py", line 300, in move 
    os.unlink(src) 
OSError: [Errno 13] Permission denied: '/usr/bin/f2py' 

यह कैसे तय किया जा सकता है? मुझे यकीन नहीं है कि यह ऐसा कुछ करने का प्रयास क्यों करता है जिसके लिए --user ध्वज पारित होने पर वैश्विक अनुमतियों की आवश्यकता होती है।

क्या ~/.local का उपयोग करने के लिए पीआईपी बताने का कोई तरीका है और सिस्टम पर बाकी सब कुछ अनदेखा करें? (मैं virtualenv का उपयोग नहीं करना चाहते हैं यह यहाँ अनावश्यक है, मैं, कई वातावरण नहीं चाहता सिर्फ एक!।)

+0

आप 'virtualenv' का उपयोग क्यों नहीं करेंगे, क्या यह सही कारण नहीं बनाया गया है? – dm03514

+3

पापी के साथ अच्छी तरह से खेल नहीं रहा है। यह '/ usr/bin /' पर 'f2py' स्थापित करने का प्रयास कर रहा है। शायद क्योंकि यह पाइथन के 'साइट-पैकेज' के बाहर है।सबसे अधिक संभावना है कि वहां अन्य फाइलें होंगी जिन्हें इसके बाहर स्थापित किया जाना चाहिए, और पीपी को यह पता नहीं लग रहा है कि इससे कैसे निपटना है। निश्चित नहीं है कि वर्चुअलएन्व यहां मदद करेगा। – tiago

+0

@tiago * Numpy पीआईपी के साथ अच्छी तरह से खेल नहीं रहा है। यह fuspy को /usr/bin/.* पर स्थापित करने का प्रयास कर रहा है, नहीं, ऐसा नहीं है। यह ** प्रणाली को अनइंस्टॉल करने की कोशिश कर रहा है ** सिस्टम numpy जो अनुमतियों की कमी के कारण विफल रहता है। मेरा जवाब देखें –

उत्तर

2

Citing मार्कस स्मिथ (पिप के मेंटेनर):

आप वैश्विक लगता है साइट पुराना हो चुका है, और उपयोगकर्ता साइट में नवीनतम चाहते हैं, तो का उपयोग करें: सिस्टम पर विश्व स्तर पर
pip install --upgrade --user SomePackage

क्योंकि (...) पैकेज (एक पुराने संस्करण में) पहले से ही उपलब्ध है आपको ऊपर मार्कस की टिप्पणी के अनुसार --upgrade विकल्प का उपयोग करना होगा। अनइंस्टॉलिंग सिस्टम numpy पैकेज शायद आपके द्वारा उपयोग किए जाने वाले पाइप के संस्करण में एक बग है (1.2.1)। वर्तमान संस्करण की कोशिश करो के रूप में कई --user विकल्प से संबंधित मुद्दों संस्करण 1.3 और 1.4

संपादित

मार्कस विशिष्ट मुद्दे पर बाद में उनके टिप्पणी में स्मिथ points में ठीक किया गया गया:

1,3 पिप # 705, है जो --user और --upgrade का उपयोग करने के लिए महत्वपूर्ण है।

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