कई अजगर संस्करणों को प्रबंधित करने का उचित तरीका क्या है?


21

मेरे पास पायथन 2.6 के साथ एक मशीन है जो डिफ़ॉल्ट पायथन के रूप में स्थापित है। फिर, मैंने पायथन 2.7 स्थापित किया, और मैन्युअल रूप से नए इंस्टॉलेशन के लिए सिम्लिंक के रूप में usr / bin / python बनाया।

तब, मैं कमांड-न-पाया के साथ समस्याओं में चल रहा था । मैं इसे पुनः स्थापित करने का प्रयास कर रहा हूं:

sudo apt-get remove command-not-found

और मुझे यह त्रुटि मिली:

/usr/bin/python does not match the
python default version. It must be
reset to point to python2.6

लेकिन मैं वास्तव में चाहता हूं कि पायथन 2.7 डिफ़ॉल्ट हो। मैं इस गड़बड़ को कैसे ठीक करूं?

जवाबों:


16

ओएस पर डिफ़ॉल्ट पायथन (या पर्ल, आदि) को बदलना वास्तव में बुरा विचार है। यह दुभाषिया वास्तव में OS का हिस्सा है और इसमें अन्य OS घटक भी हो सकते हैं जो विशेष रूप से दुभाषिया के उस संस्करण के साथ काम करने के लिए लिखे गए हैं।

उदाहरण के लिए, सिस्टम सॉफ्टवेयर अपडेट करने वाले यम टूल को रेडहेट करना एक अजगर अनुप्रयोग है। आप वास्तव में इसे तोड़ना नहीं चाहते हैं। इस तरह के अनुप्रयोग विशिष्ट, शायद गैर मानक, अजगर मॉड्यूल पर निर्भर हो सकते हैं जो आपके द्वारा स्थापित संस्करण में नहीं हो सकता है। उदाहरण के लिए, उबंटू के बारे में मेरा मानना ​​है कि पायथन में लिखे गए कुछ अंतर्निहित ओएस उपकरण स्टॉर्म नामक एक ओआरएम का उपयोग करते हैं जो पायथन मानक पुस्तकालय का हिस्सा नहीं है। क्या आपके क्लीन पायथन 2.7 इंस्टॉल में स्टॉर्म मॉड्यूल का विशिष्ट अपेक्षित संस्करण स्थापित है? क्या इसके पास स्टॉर्म का कोई संस्करण है? नहीं? तब आपने अपने OS का एक हिस्सा तोड़ दिया है।

इसे करने का सही तरीका है कि आप अपने पसंदीदा संस्करण को स्थापित करें और अपने उपयोगकर्ता खाते को अपने .bash_profile, पथ और इस तरह सेट करके इसका उपयोग करें। आप पायथन के लिए virtualenv मॉड्यूल में भी देखना चाह सकते हैं।


1
यहां मेरा रास्ता भटक गया। होगा -1 अगर मैं इस ढेर पर प्रतिनिधि था। क्यों? क्योंकि सुझाया गया दृष्टिकोण केवल कहता है "अजगर के अपने पसंदीदा संस्करण को स्थापित करें"। सिस्टम अजगर को छुपाये बिना यह कैसे किया जाता है?
jez

@ जेज उपयोगकर्ताओं को अपने आवेदन और पसंद के ओएस संयोजन के लिए स्थापना निर्देशों का उल्लेख करना चाहिए। सामान्य भाषा में इंस्टॉलर संकुल एक सौम्य स्थान पर स्थापित होगा, मुख्य OS घटकों को अधिलेखित नहीं करेगा ताकि OS संस्करण को अधिलेखित किया जाए विशेष मामला होगा।
साइमन हिब्स

8

मैं इस गड़बड़ को कैसे ठीक करूं?

पुनर्स्थापना से ज्यादा कुछ नहीं python। यह आपके परिवर्तन (सिमिलिंक) को पूर्ववत कर देगा।

आप इसे डिफ़ॉल्ट क्यों चाहते हैं? हर बार जब आपको इसकी आवश्यकता होती है, तो अपनी (निष्पादन योग्य) लिपियों की शुरुआत में बस ( python2.7या #!/usr/bin/python2.7शेबंग) का उपयोग करें या शामिल करें।

यदि आप python2.7सिस्टम-वाइड डिफॉल्ट के रूप में जोर देते हैं , तो बाद में उबंटू के रिलीज का उपयोग करें (वर्तमान में यह उबंटू 11.04, कोडेन्टी नेटी है)। यह उस संस्करण को डिफ़ॉल्ट के रूप में उपयोग करता है।

भविष्य में, मैन्युअल हस्तक्षेप करने से बचें जैसे कि आपने सिमलिंक चीज़ के साथ क्या किया था। यह विशेष रूप से डिस्ट्रो-प्रबंधित फ़ाइलों के लिए सच है, और विशेष रूप से पायथन प्रतिष्ठानों जैसे जटिल जानवरों के लिए।


मुझे लगा कि एक बार अपग्रेड करने के बाद डिफ़ॉल्ट अजगर स्थापना को बदलना केवल उचित है। मैं इसे डिफ़ॉल्ट के रूप में चाहता हूं क्योंकि मैं नए अजगर के साथ काम करना चाहता हूं ... डिफ़ॉल्ट रूप में। जब मैं pythonबैश से टाइप करता हूं , तो मैं नया अजगर प्राप्त करना चाहता हूं। क्या मैंने जो किया उससे बेहतर तरीका यह है?
ripper234

बस ध्यान दें - मुझे नहीं लगता कि मैंने अजगर 2.7 स्थापित करने के तरीके में कुछ भी गलत नहीं था। एकमात्र "अपरंपरागत" चाल से सिमिलिंक बदल रहा था, जो मुझे लगा कि इसे डिफ़ॉल्ट रूप से सेट करने का उचित तरीका है। क्या कोई बेहतर तरीका है?
ripper234

2
@ripper: मुझे लगता है कि मैं इस थ्रेड में थोड़ी देर से आ रहा हूं। जैसा कि त्सेपांग कहते हैं कि pythonउबंटू पर पैकेज सिस्टम संस्करण को निर्धारित करता है। अब, अपनी स्थापना को अनुकूलित करना संभव है, इसलिए अजगर 2.7 अपना स्वयं का अजगर पैकेज आदि बनाकर डिफ़ॉल्ट है, लेकिन यदि ऐसा है, तो आप उबंटू के बजाय प्रभावी रूप से अपने पायथन इंस्टॉलेशन के अनुरक्षक बन जाएंगे, और आपको सीखना होगा कि पायथन कैसे डेबियन / उबंटू पर प्रबंधित किया जाता है। इस बात को ध्यान में रखें कि सिस्टम में अन्य पायथन पैकेज को डिफ़ॉल्ट रूप में 2.6 के साथ काम करने के लिए कॉन्फ़िगर किया गया है, इसलिए, इसके अलावा कुछ और, टूटने का परिणाम हो सकता है।
फहीम मीठा

1
@ तशपंग: अच्छा सारांश!
फहीम मीठा

12
@ ripper234: इसमें कुछ भी परिवर्तन न करें /usr/bin, यह आपके वितरण के लिए आरक्षित है। इसके बजाय, /usr/local/bin/pythonएक प्रतीकात्मक लिंक करें python2.7। फिर स्क्रिप्ट्स #!/usr/bin/env python(अनुशंसित मुहावरे) का उपयोग करने के साथ-साथ pythonकमांड लाइन पर टाइप करके पायथन 2.7 चलाएंगे। डिस्ट्रीब्यूशन से मिले डिस्क्रिप्शन से कि पाइथन डिस्ट्रीब्यूशन से बुला सकता है #!/usr/bin/python
गिलेस एसओ- बुराई को रोकना '

2

अस्वीकरण: मैं बस अतिप्रवाह ढेर करने के लिए यह एक ही जवाब पोस्ट:

/programming/2812520/pip-dealing-with-multiple-python-versions/50319252

यहाँ समस्या पर मेरा लेना है। पायथन 3 के लिए काम करता है। मुख्य विशेषताएं हैं:

  • प्रत्येक पायथन संस्करण को स्रोत से संकलित किया गया है
  • सभी संस्करण स्थानीय रूप से स्थापित हैं
  • आपके सिस्टम के डिफ़ॉल्ट पायथन इंस्टॉलेशन को किसी भी तरह से मैनज नहीं करता है
  • प्रत्येक पायथन संस्करण को वर्चुअनव के साथ अलग किया जाता है

चरण इस प्रकार हैं:

  1. यदि आपके पास कई अतिरिक्त पायथन संस्करण हैं जो किसी अन्य तरीके से स्थापित हैं, तो उनसे छुटकारा पाएं, जैसे, $ HOME / .Local / lib / python3.x , आदि को हटा दें (विश्व स्तर पर स्थापित भी)। यद्यपि आपके सिस्टम के डिफ़ॉल्ट python3 संस्करण को स्पर्श न करें।

  2. निम्नलिखित निर्देशिका संरचना के तहत विभिन्न अजगर संस्करणों के लिए स्रोत डाउनलोड करें:

    $HOME/
        python_versions/ : download Python-*.tgz packages here and "tar xvf" them.  You'll get directories like this:
          Python-3.4.8/
          Python-3.6.5/
          Python-3.x.y/
          ...
  3. प्रत्येक "पायथन-3. प्रॉक्सी /" निर्देशिका में, निम्न में से किसी भी चरण में "सुडो" का उपयोग करें:!

    mkdir root
    ./configure --prefix=$PWD/root 
    make -j 2
    make install
    virtualenv --no-site-packages -p root/bin/python3.x env
  4. "Python_versions /" पर इस तरह की फाइलें बनाएँ:

    env_python3x.bash:
    
    #!/bin/bash
    echo "type deactivate to exit"
    source $HOME/python_versions/Python-3.x.y/env/bin/activate
  5. अब, कभी भी आप python3.x का विकल्प चुनना चाहते हैं, करें

    source $HOME/python_versions/env_python3x.bash

    virtualenv दर्ज करने के लिए

  6. Virtualenv में रहते हुए, अपने पसंदीदा अजगर संकुल के साथ स्थापित करें

    pip install --upgrade package_name
  7. वर्चुअनव और पायथन संस्करण से बाहर निकलने के लिए बस "निष्क्रिय करें" टाइप करें


0

हमने मैक और उबंटू पर बहुत सारे अजगर वितरण को रखा और यहाँ मेरी सिफारिश है।

  1. सिस्टम अजगर को बिना बताए छोड़ दें: इसका इस्तेमाल कभी न करें।

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

    • चंदवा भी बॉक्स के बाहर compaitble है pip, PyPi पैकेज प्रबंधक कमांड जो आपको पैकेज स्थापित करने देता है (जैसे pip install python-twitter)
  3. यदि आप आभासी वातावरण का उपयोग करने की योजना बनाते हैं (यानी आप अजगर कार्यक्रमों को विकसित कर रहे हैं और प्रत्येक के लिए एक समर्पित स्वच्छ अजगर वातावरण चाहते हैं, तो उनके बीच स्विच करने का एक आसान तरीका है), मैं कैनोपी पर एनाकोंडा की सिफारिश करूंगा क्योंकि यह आभासी पर्यावरण प्रबंधक उपकरण है । यह आपको रहने देगा

0

pyenv

https://github.com/pyenv/pyenv

Pyenv आपको एकल उपयोगकर्ता के लिए सुडो के बिना कई पायथन संस्करणों का प्रबंधन करने की अनुमति देता है, जैसे कि Node.js NVM और रूबी RVM

Pyenv स्थापित करें:

curl https://pyenv.run | bash

फिर अपने को जोड़ें .bashrc:

export PATH="${HOME}/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

स्थापित करने के लिए पायथन संस्करण खोजें:

pyenv install --list

आप चाहते हैं अजगर संस्करण स्थापित करें:

# Increase the chances that the build will have all dependencies.
# https://github.com/pyenv/pyenv/wiki/Common-build-problems
sudo apt build-dep python3
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
  libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
  xz-utils tk-dev libffi-dev liblzma-dev python-openssl git

# Build and install a Python version from source.
pyenv install 3.8.0

उपलब्ध पायथन संस्करणों को सूचीबद्ध करें:

pyenv versions

अब हमारे पास है:

* system (set by /home/cirsan01/.pyenv/version)
  3.8.0

एक अलग अजगर संस्करण का चयन करें:

pyenv global 3.8.0
python --version
python3 --version

दोनों आउटपुट:

Python 3.8.0

अब हम सामान्य रूप से पैकेजों को स्थापित करने और उपयोग करने के लिए आगे बढ़ सकते हैं:

pip install cowsay
python -c 'import cowsay; cowsay.tux("Python is fun")'
cowsay 'hello'

हम इस बात की पुष्टि कर सकते हैं कि सब कुछ स्थानीय रूप से हमारे स्वच्छ environemnt में स्थापित है:

python -c 'import cowsay; print(cowsay.__file__)'
which cowsay

प्रति परियोजना उपयोग

पिछले अनुभाग में, हमने देखा कि ग्लोबल सेटअप में पाइनेव का उपयोग कैसे किया जाए।

हालाँकि, जो आप आमतौर पर चाहते हैं, वह प्रति प्रोजेक्ट के आधार पर एक विशिष्ट अजगर और पैकेज संस्करण सेट करना है। यह इस तरह से करना चाहिये।

पहले अपने इच्छित पायथन संस्करण को पहले की तरह स्थापित करें।

फिर, अपने प्रोजेक्ट डायरेक्टरी के अंदर से, इच्छित अजगर संस्करण को इसके साथ सेट करें:

pyenv local 3.8.0

जो .python-versionसंस्करण स्ट्रिंग युक्त एक फ़ाइल बनाता है ।

और अब हमारी परियोजना के लिए स्थानीय स्तर पर एक पैकेज स्थापित करें: TODO: कोई अच्छा तरीका नहीं है: ऐसा लगता है: /programming/30407446/pyenv-choose-virtualenv-directory/5926772#59267972

अब, जब कोई आपकी परियोजना का उपयोग करना चाहता है, तो वे करेंगे:

pyenv local

जो पायथन संस्करण को सही पर सेट करता है।

संबंधित सूत्र:

उबंटू 18.04 पर परीक्षण किया गया, pyenv 1.2.15।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.