"आपका python3 इंस्टॉल दूषित है"


13

मैं Ubuntu 16.04.5 LTS से 18.04 तक अपग्रेड करना चाहता हूं, इसलिए भाग गया sudo do-release-upgrade। डाउनलोड करने और निकालने के बाद bionic.tar.gzमुझे मिलता है:

Can not upgrade 

Your python3 install is corrupted. Please fix the '/usr/bin/python3'
symlink.

मैंने देखा कि कैसे "अजगर स्थापना दूषित है" को ठीक करने के लिए? और इसलिए मैंने sudo ln -sf /usr/bin/python3.6 /usr/bin/python3सोचा कि यह एक ऐसी ही समस्या होगी। लेकिन यह काम नहीं किया (अभी भी एक ही त्रुटि संदेश)।

मेरे पास कुछ अजगर संस्करण हैं:

$ ls /usr/lib | grep python
python2.7
python3
python3.5
python3.6

$ update-alternatives --display python3
python3 - auto mode
  link best version is /usr/bin/python3.6
  link currently points to /usr/bin/python3.6
  link python3 is /usr/bin/python3
/usr/bin/python3.5 - priority 1
/usr/bin/python3.6 - priority 2

मैं कैसे ठीक python3करूँ?


1
और पुनर्स्थापना के बारे में क्या (जैसा कि स्वीकृत उत्तर में बताया गया है)?
कुल्फी

जवाबों:


16

आपको 16.04 के लिए डिफ़ॉल्ट पायथन 3 संस्करण का उपयोग करने की आवश्यकता है। वह 3.5 है , 3.6 नहीं। तो चलाएं:

sudo ln -sf /usr/bin/python3.5 /usr/bin/python3

यदि वह काम नहीं करता है, तो python3पैकेज को फिर से स्थापित करने का प्रयास करें ।

sudo apt-get install --reinstall python3

वैसे, update-alternatives --display python3आपको देना चाहिए update-alternatives: error: no alternatives for python3। पाइथन के विभिन्न संस्करण उबंटू में विकल्प नहीं हैं।


33

मैं सिर्फ पॉप पर इस समस्या में भाग गया! _ _ 18.04, 18.10 पर अपग्रेड करने की कोशिश कर रहा है, और यह पता चला है कि समस्या सिम्पलिंक में है और इसके लिए /usr/bin/pythonनहीं /usr/bin/python3। मैंने (नहीं ) के /usr/bin/python3.6लिए एक विकल्प के रूप में कॉन्फ़िगर किया था , और जब मैंने इसे बदल दिया, तो मैं उम्मीद के मुताबिक दौड़ सकता था ।pythonpython3do-release-upgrade

मैं त्रुटि संदेश को इंगित करना चाहता हूं pythonऔर नहीं python3


पहले, समस्या के साथ:

$ update-alternatives --display python
python - manual mode
  link best version is /usr/bin/python3.6
  link currently points to /usr/bin/python2.7
  link python is /usr/bin/python
/usr/bin/python2.7 - priority 1
/usr/bin/python3.6 - priority 2 

मैंने इसे इस तरह तय किया:

$ sudo update-alternatives --remove-all python
$ sudo ln -sf /usr/bin/python2.7 /usr/bin/python

नीचे इस टिप्पणी को भी देखें जिसमें अधिक सटीक समाधान का वर्णन किया गया है जो यह भी बताता है कि क्या चल रहा है और इसे कैसे ठीक किया जाए।


1
हां, मैं पुष्टि कर सकता हूं कि समाधान काम करता है, इसे स्वीकार किया जाना चाहिए।
सुमित जैन

यह मेरे लिए भी काम किया
Efi Kaltirimidou

3
ऑप्ट करना update-alternatives --remove-all pythonनिश्चित रूप से एक अनावश्यक ओवरकिल था: आपको केवल नवीनतम (उदा ) की ओर इशारा करने के update-alternatives --config pythonलिए उपयोग करने की आवश्यकता थी , फिर विशेष रूप से इंगित करने के लिए उपयोग करें - जो 18.04 के लिए डिफ़ॉल्ट पायथन 3 संस्करण है। pythonpython2.*python2.7update-alternatives --config python3python3 python3.6
किरीसॉवो

2
आप उबंटू 18.04 में अजगर 3.7 नवीनीकृत करने की आवश्यकता है, यह सिस्टम वाइड ऐसा नहीं करते हैं - या आप बुरा थोड़ा समस्या हो रही अंत करने के लिए बाध्य कर रहे हैं प्रणाली में आवश्यक उपकरणों की तरह साथ gnome-terminal, update-managerआदि बल्कि आभासी वातावरण (प्रलेखन का उपयोग यहाँ और यहाँ )
किरीसॉवो

@ किरी सिस्टम एक (एस) को बदलने के बिना पायथन के अन्य संस्करणों को स्थापित करने के तरीके हैं। उदाहरण के लिए , डीपीएस का उपयोग करते हुए
१ .:

5

जब मैं 16.04 एलटीएस से 18.04 एलटीएस में अपग्रेड करना चाहता था, तब मैंने डब्ल्यूएसएल उबंटू पर चल रहे विंडोज 10 1903 पर इस त्रुटि संदेश को देखा ।

do-release-upgradeअसफल होने के बाद , मैंने pythonविकल्प की पेशकश की update-alternatives --config pythonऔर फिर से अपग्रेड कमांड को चलाया। इससे कोई फायदा नहीं हुआ।

फिर मैंने लॉग फाइल को चेक किया /var/log/dist-upgrade/main.logजिसमें लाइनें थीं

2019-09-02 20:58:08,686 DEBUG _pythonSymlinkCheck run
2019-09-02 20:58:08,687 DEBUG python symlink points to: '/etc/alternatives/python', but expected is 'python2.7' or
'/usr/bin/python2.7'
2019-09-02 20:58:08,688 ERROR pythonSymlinkCheck() failed, aborting

इसलिए यद्यपि त्रुटि संदेश में python3 का उल्लेख है , समस्या python2 के बारे में है

/usr/bin/pythonलिंक करने के लिए अपग्रेड स्क्रिप्ट की जाँच करता है /usr/bin/python2, DistUpgrade/DistUpgradeController.pyयहाँ का सोर्स कोड देखें : ubuntu लॉन्चपैड

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

यदि आप वैकल्पिक सिस्टम से अजगर को नहीं हटाना चाहते हैं, तो अपग्रेड प्रक्रिया के दौरान केवल लिंक को समय के लिए बदलें:

# rm /usr/bin/python 
# ln -sf /usr/bin/python2.7 /usr/bin/python
# do-release-upgrade

इसने मेरे लिए काम किया।

नवीनीकरण प्रक्रिया के दौरान, लिंक स्वचालित रूप से मरम्मत की जाती है। इसलिए जब नवीनीकरण समाप्त हो जाता है, तो यह विकल्प निर्देशिका में अजगर प्रविष्टि की ओर इशारा करता है:

$ ls -l /usr/bin/python
lrwxrwxrwx 1 root root 24 Sep  2 22:01 /usr/bin/python -> /etc/alternatives/python

संपादित करें: पूरी तरह से जानकारी के लिए, यह समस्या तब भी प्रकट हो सकती है जब आप 18.04 LTS से 19.04 तक अपग्रेड करते हैं और एवर इस स्थिति पर भी लागू होता है।


1
नोट: यह उत्तर उबंटू 18.04 LTS से 19.04 तक अपग्रेड पर भी लागू होता है। मैंने इसे 18.04 तक अद्यतन करने के बाद स्वयं प्रयास किया था।
डेनियल के।

3

मूल रूप से इस समस्या के समाधान /usr/bin/pythonमें पाइथन के सही संस्करण की ओर इशारा करना शामिल है, आपकी उबंटू रिलीज़ की उम्मीद है (उदाहरण के लिए, 16.04 में पाइथन 2.7 और 18.04 में पाइथन 3.6 था)।

यदि आपके पास अपने सिस्टम में पायथन के कई संस्करण स्थापित हैं, तो आप update-alternativesउन्हें प्रबंधित करने के लिए उपयोग कर सकते हैं। यह ज्यादा महत्वपूर्ण नहीं है कि पायथन के लिए आपका डिफ़ॉल्ट विकल्प सही संस्करण है जो आपके सिस्टम को उम्मीद है (उबंटू 18.04 में 3.6), यह काम नहीं करेगा।

इसका कारण यह नहीं है कि उपयोग करते समय update-alternatives, यह /usr/bin/python3इंगित करता है /etc/alternatives/python3, और ऐसा लगता है कि /usr/bin/python3बिंदु बनाने के समान नहीं है /usr/bin/python3.6

इसीलिए इस समस्या के समाधान में अक्सर आपके Python3 संस्करणों को प्रबंधित करना बंद कर दिया जाता है update-alternativesऔर Python3 /usr/bin/python3के सही संस्करण की ओर आपका सिस्टम अपेक्षा करता है।


/usr/bin/python18.04 की क्लीन इंस्टाल पर मौजूद नहीं है, लेकिन अगर आप क्लीन इंस्टाल के बजाय अपग्रेड करते हैं या pythonपैकेज को इंस्टॉल करते हैं , तो उस स्थिति में यह पायथन 2.7 होना चाहिए, 3.6 नहीं। पीईपी 394 देखें ।
वेजेंड्रिया

स्पष्ट होने के लिए, पायथन के विभिन्न संस्करण उबंटू पर विकल्प नहीं हैं और इसके साथ प्रबंधित नहीं किया जाना चाहिए update-alternatives। ऐसा इसलिए है क्योंकि OS स्थापित किए जा रहे एक निश्चित संस्करण पर निर्भर करता है।
wjandrea
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.