$ HOME फ़ोल्डर में पाइप पैकेज स्थापित करना


330

क्या यह संभव है? स्थापित करते समय pip, मेरे $HOMEफ़ोल्डर के अंदर अजगर संकुल स्थापित करें । (उदाहरण के लिए, मैं स्थापित करना mercurial, उपयोग करना चाहता हूं pip, लेकिन $HOMEइसके बजाय अंदर /usr/local)

मैं एक मैक मशीन के साथ हूं और बस इस संभावना के बारे में सोचा था कि "प्रदूषण" के बजाय /usr/local, मैं अपने $HOMEबजाय इसका उपयोग करूंगा ।

PEP370 बिल्कुल इस बारे में है। क्या केवल एक निर्माण कर रहा है ˜/.localऔर pip install packageइन पैकेजों को केवल मेरे $ HOME फ़ोल्डर में स्थापित करने के लिए पर्याप्त है?


क्या आपने virtualenv की जाँच की है? आप एक पृथक वातावरण में पाइप के साथ पैकेज स्थापित कर सकते हैं।
joet3ch 4

2
मैंने इसके बारे में सोचा था, लेकिन मैं मौजूदा अजगर (2.6.1) का उपयोग करके कुछ अजगर अनुप्रयोगों को स्थापित करना चाहूंगा, लेकिन / usr / स्थानीय / पर स्थापित करने के बजाय, अपने $ HOME फ़ोल्डर में स्थापित करें और इसे $ PATH में जोड़ें। मैं जानना चाहता हूं कि क्या यह संभव है, और इस दृष्टिकोण के किसी भी चेतावनी।
कोई व्यक्ति अभी भी आपको

11
PEP370 को बढ़ावा देने के लिए +1। यह एक सरल लेकिन उपयोगी विकल्प है जिसके बारे में अधिक लोगों को पता होना चाहिए।
नेड डिली

मैं इसी तरह की समस्या से लड़ रहा था (संभवतः दो अलग-अलग अजगर के लिए गलत पाइप और easy_install के कारण)। अंतिम उपाय के रूप में, मैंने सादे का उपयोग करने की कोशिश की $ python setup.py --user install। और इसने काम किया। पैकेज अब होम सबडिअर में स्थापित किया गया है और सभी उम्मीद के मुताबिक काम करता है। मेरे सर्वर व्यवस्थापक से बात करनी होगी।
Jan Vlcinsky

1
यदि आपको पीआईपी स्थापित करने की आवश्यकता है, तो बस wget https://bootstrap.pypa.io/get-pip.pyउसके बाद कुछ ऐसा करें python get-pip.pyऔर आप जाने के लिए अच्छा हो। यदि आप एक मशीन पर उपयोगी हो सकते हैं जहां स्थापित पीआईपी बहुत पुराना है (मेरे लिए मामला है)। अधिक जानकारी के लिए pip.readthedocs.org/en/latest/installing.html देखें ।
मार्कस

जवाबों:


463

जब आप एक का उपयोग कर सकते हैं virtualenv, तो आपको इसकी आवश्यकता नहीं है। चाल स्क्रिप्ट में PEP370 --userतर्क पारित कर रही है setup.py। के नवीनतम संस्करण के साथ pip, इसे करने का एक तरीका है:

pip install --user mercurial

इसके परिणामस्वरूप hgस्क्रिप्ट को स्थापित किया जाना चाहिए $HOME/.local/bin/hgऔर बाकी hg पैकेज में $HOME/.local/lib/pythonx.y/site-packages/

ध्यान दें, कि उपरोक्त पायथन 2.6 के लिए सच है। एक हुई है विवाद का सा क्या PEP370 शैली के लिए मैक ओएस एक्स पर उचित निर्देशिका स्थान है के बारे में अजगर कोर डेवलपर्स के बीच userप्रतिष्ठानों। अजगर 2.7 और 3.2 में, मैक ओएस एक्स पर स्थान से बदल गया था $HOME/.localकरने के लिए $HOME/Library/Python। यह भविष्य के रिलीज़ में बदल सकता है। लेकिन, अब के लिए, 2.7 (और 3.2, यदि hgपायथन 3 पर समर्थित थे), तो उपरोक्त स्थान $HOME/Library/Python/x.y/bin/hgऔर होंगे $HOME/Library/Python/x.y/lib/python/site-packages


अच्छी बात। दुर्भाग्य से, पायथन 2.7 में एक बग है, जिसके कारण PYTHONUSERBASE को OS X ढांचे के निर्माण के लिए अनदेखा किया जाता है। यह पायथन 2.7.3 के लिए तय किया जाएगा।
नेड डिली

1
यह बहुत ही सहज है। easy_installडिफ़ॉल्ट रूप से मैक ओएस एक्स में स्थापित होता है, इसलिए मुझे $HOMEफ़ोल्डर के बाहर केवल पाइप स्थापित करना होगा ।
कोई अब भी आपको MS-DOS

1
मैंने PYTHONUSERBASE को किसी अन्य स्थान पर बदलने का प्रयास किया है। कोई सफलता नहीं। यह विशेष रूप से विंडोज पर कैसे किया जाता है?
Snerd

2
खबरदार, कि अगर आप ऐसा करते हैं और फिर कॉन्डा के वातावरण का उपयोग करने की कोशिश करते हैं तो .localहमेशा स्थापित फाइलें हिट हो जाएंगी जिससे आयात त्रुटियों को ट्रैक करने में बहुत मुश्किल हो सकती है।
ताकसवेल

12
ध्यान दें कि OSX पर, उपयोगकर्ता साइट निर्देशिका का बिन फ़ोल्डर PATH पर नहीं है। इसका मतलब है कि उपयोगकर्ता साइट निर्देशिका में संकुल द्वारा स्थापित स्क्रिप्ट तब तक क्रियान्वित नहीं होगी जब तक कि आप export PATH=$PATH:~/Library/Python/X.Y/bin/
एंड्रे कैरन

21

मैं अपने होम निर्देशिका में virtualenv का उपयोग करेगा।

$ sudo easy_install -U virtualenv
$ cd ~
$ virtualenv .
$ bin/pip ...

आप तब भी परिवर्तन कर सकते हैं ~/.(login|profile|bash_profile), जो भी आपके शेल के लिए सही है कि आप अपने पैट को ~ / बिन जोड़ सकते हैं और फिर वह pip|python|easy_installडिफ़ॉल्ट रूप से उपयोग किया जाएगा।


9
"वास्तविक" तरीका यह है है virtualenv venv, source venv/bin/activate। जरूरी नहीं कि आप हमेशा अपने virtualenv का उपयोग करना चाहते हों , और इस पद्धति का उपयोग करके, (venv)जब आप इसका उपयोग कर रहे हों , तो आपका संकेत पहले से उपसर्ग किया गया हो।
nyuszika7h

2
@ nyuszika7h हम जानते हैं कि virtualenv का उपयोग कैसे किया जाता है। लेकिन यह वास्तव में सवाल का जवाब देता है और एक बहुत साफ समाधान है।
इसकाफेयर

8
@itsafire "हम" कौन है? मैं आपको en.wikipedia.org/wiki/Weasel_word
nyuszika7h

3
वैसे भी, मैं असहमत हूं, यह "साफ समाधान" नहीं है। यह एक व्यर्थ हैक है।
nyuszika7h

19

आप गंतव्य निर्देशिका निर्दिष्ट करने के लिए -tविकल्प ( --target) निर्दिष्ट कर सकते हैं। pip install --helpविस्तृत जानकारी के लिए देखें यह वह कमांड है जिसकी आपको आवश्यकता है:

pip install -t path_to_your_home package-name

उदाहरण के लिए, मेरी $HOMEनिर्देशिका में, mxnet को स्थापित करने के लिए , मैं टाइप करता हूं:

pip install -t /home/foivos/ mxnet

एक त्रुटि हो रही है distutils.errors.DistutilsOptionError: can't combine user with prefix, exec_prefix/home, or install_(plat)base। इसका क्या मतलब है?
एंथनी काँग

संबंधित चर्चा के लिए github.com/pypa/pip/issues/3826 की जाँच करें । मैं इस बारे में अधिक कुछ नहीं जानता, लेकिन मुझे अपने वातावरण में कभी समस्या नहीं हुई।
फिवोस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.