घातक पायथन त्रुटि: Py_Initialize: स्थानीय एन्कोडिंग प्राप्त करने में असमर्थ ... SyntaxError: अमान्य सिंटैक्स निरस्त (कोर डंप किया गया)


16

मैं चलाकर एनाकोंडा स्थापित किया

bash Anaconda-2.2.0-Linux-x86_64.sh

मेरे Ubuntu 14.04 सिस्टम पर कमांड, जो सफलतापूर्वक स्थापित हुआ, जिसके बाद मुझे अपना नया /home/username/anaconda/bin$ PATH पर्यावरण चर निर्यात करने के लिए कहा गया ।

ऐसा करने पर, मैं आईडीई सहित एनाकोंडा की सभी विशेषताओं का उपयोग करने में सक्षम था और साथ ही सभी कोंडा आधारित कमांड का सफलतापूर्वक उपयोग कर सकता था।

अगली बार जब मैंने अपना सिस्टम बूट किया, तो हर मिस-टाइप कमांड को देखा

Fatal Python error: Py_Initialize: Unable to get the locale encoding
  File "/usr/local/lib/python2.7/encodings/__init__.py", line 123
    raise CodecRegistryError,\
                            ^
SyntaxError: invalid syntax
Aborted (core dumped)

त्रुटि। ( pythonविशिष्ट होने के अलावा सभी आदेश )

कुछ स्टैकएक्सचेंज और आस्कुबंटु पोस्ट्स का अनुसरण करने पर और यह भी ध्यान देने योग्य है कि मेरे $PYTHONPATHलिए सेट किया गया था usr/local/lib/python2.7, मैंने कोशिश की

export PYTHONPATH=$PYTHONPATH:/home/username/anaconda/lib/python2.7

लेकिन इससे कोई फायदा नहीं हुआ।

यह मुझे पैकेज हटाने और पुनः स्थापित करने की एक पूरी गाथा के माध्यम से गया था, और निश्चित रूप से, बहुत सारे अपडेट और अपग्रेड, अपने आप से समस्या को ठीक करने और ठीक करने के लिए।

conda info -a रिटर्न:

CIO_TEST: <not set>
CONDA_DEFAULT_ENV: <not set>
CONDA_ENVS_PATH: <not set>
LD_LIBRARY_PATH: <not set>
PATH: /home/username/anaconda/bin:/home/username/Scala-sbt/sbt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/username/bin:/usr/local/java/jdk1.8.0_20/bin
PYTHONHOME: <not set>
PYTHONPATH: /usr/local/lib/python2.7:/home/username/anaconda/bin/python

आदेश

which python

रिटर्न

/home/username/anaconda/bin/python

तथा

echo "$PATH"

रिटर्न

/home/username/anaconda/bin:/home/username/Scala-sbt/sbt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/username/bin:/usr/local/java/jdk1.8.0_20/bin

मुझे पता है कि यह कुछ ऐसा है जो मैंने पथ चर सेट करने के तरीके के साथ किया है, विशेष रूप से ~/.bashrcजिसमें एनाकोंडा ने स्वचालित रूप से मेरे / होम / यूज़रनेम / एनाकोंडा / बिन फ़ोल्डर को $PATHवेरिएबल के लिए तैयार किया है (यह एनाकोंडा की दूसरी स्थापना के दौरान हुआ था क्योंकि मैंने इसे पहले नहीं हटाया था। )।

मैंने ~/.profileया तो किसी अन्य पर्यावरण चर को संशोधित नहीं किया है या ~/.bashrc


मैंने ~/.bashrcपुनः आरंभ करने से पहले निर्यात $ PYTHONPATH लाइन को अपने साथ जोड़ा ।

एनाकोंडा की सभी विशेषताएं अब काम करती हैं, हालांकि Fatal Python error: Py_Initialize: Unable to get the locale encodingअधिकांश अज्ञात कमांड त्रुटि के बजाय एक ही त्रुटि दिखाई देती है, अधिकांश गलत कमांड के लिए।

मैं इसे देखता रहूंगा और अपने उत्तर को संपादित करूंगा (या मौजूदा उत्तरों को संदर्भित करता हूं, यदि कोई हो) जैसे ही मुझे पता चलता है कि ऐसा क्यों होता है।

जवाबों:


11

मैं PYTHONPATH को परेशान करने की सलाह दूंगा। आमतौर पर इसकी आवश्यकता नहीं होती है, और यह चीजों को इस तरह से तोड़ने का कारण बनता है कि एक पायथन लोड चीजों को दूसरे पायथन से बना देता है (इस मामले में, ऐसा लगता है कि सिस्टम का पायथन 3 कुछ लोड करने की कोशिश कर रहा है जो पायथन 2 के लिए लिखा गया था)।


3
देर से जवाब के लिए ईमानदारी से माफी, सर। PYTHONPATH को परेशान करके, क्या आप मैन्युअल रूप से इसे स्टार्टअप पर हर बार सेट करने का मतलब है? एनाकोंडा वर्तमान में पायथन 2.7.10 चलाता है और मैंने पायथन 3 स्थापित नहीं किया है, तो यह त्रुटि क्यों दिखाई देगी? यही कारण है कि मैं पूछ रहा हूं कि उपयोगकर्ता साइट के लिए कॉनडा की जानकारी dYTHONPATH चर के रूप में निर्दिष्ट करती है PYTHONPATH: /home/usrnme/anaconda/lib/python2.7:/usr/local/lib/python2.7। अगर मुझे PYTHONPATH: / home / usrnme / anaconda .. को मेरी ~ / .bashrc से हटाना है, तो त्रुटि अभी भी बनी रहेगी, और एनाकोंडा की कोई भी विशेषता तब तक काम नहीं करेगी, जब तक कि वह दोबारा सेट न हो जाए।
समिरज़च

3

मैं पिछले कुछ दिनों में इसी तरह के मुद्दे रख रहा हूं, इसलिए मैंने इसे वापस ट्रेस किया कि कैसे "कमांड नहीं मिला"। उबंटू 14.04 (और लिनक्स मिंट 17 में, जिसे मैं 14.04 लिपियों का उपयोग करता हूं), /etc/bash.bashrc में निम्न फ़ंक्शन है:

if [ -x /usr/lib/command-not-found ]; then
    function command_not_found_handle {
        # check because c-n-f could've been removed in the meantime
        if [ -x /usr/lib/command-not-found ]; then
            /usr/bin/python /usr/lib/command-not-found -- $1
            return $?
        else
           return 127
        fi
    }
fi

हालाँकि, / usr / lib / कमांड-नॉट-पायथन 3 के लिए फिर से लिखा गया है। यह /etc/bash.bashrc कमांड को इसके साथ हैंडल करता है:

if sys.version < '3':                                                       
    # We might end up being executed with Python 2 due to an old            
    # /etc/bash.bashrc.                                                     
    import os                                                               
    if "COMMAND_NOT_FOUND_FORCE_PYTHON2" not in os.environ:                 
        os.execvp("python3", [sys.argv[0]] + sys.argv)

यह सीधा रास्ता देने के बजाय पथ से "python3" कहता है। इसे ठीक करने के लिए, 22 / usr / lib / कमांड-नॉट-पाया की लाइन से बदला जाना चाहिए

os.execvp("python3", [sys.argv[0]] + sys.argv)

सेवा

os.execv("/usr/bin/python3", [sys.argv[0]] + sys.argv)

यह एनाकोंडा के बजाय उबंटू के साथ एक बग प्रतीत होता है। मैं यह देखने के लिए जांच करूंगा कि क्या यह बाद के वितरण में दिखाई देता है।


1

मानक स्थानों में python3 स्थापित करने और मुझे इसका उपयोग करने के लिए sudo की आवश्यकता होने के बाद, मैंने इसे अपने घर में उपयोग करके स्थानीय रूप से स्थापित किया:

python3 -m venv env_py3
source env_py3/bin/activate

लेकिन और त्रुटियां थीं। बस AWS के अमेज़ॅन लिनक्स उदाहरण पर PYTHONPATH को परेशान करना मेरे लिए बहुत अच्छा काम किया।


1

मेरी समस्या थोड़ी अलग थी: एक उपयोगकर्ता के रूप में, मैं चला सकता था python, लेकिन दूसरे उपयोगकर्ता के रूप में, नहीं (मुझे ओपी के समान त्रुटि मिली)। अंत में, मुझे पता चला कि अनुमतियाँ और /usr/lib/python3.5 के स्वामित्व को खराब कर दिया गया था। इसका कारण यह था कि मैंने वर्चुअलाइज़व पर अनुमतियों और स्वामित्व को पुन: निर्धारित किया था, जो सिम्लिंक लक्ष्यों (लक्ष्य /usr/lib/python3.5 ) को भी संशोधित करने में समाप्त हुआ था ।

युक्ति: strace pythonयह जानने के लिए कि पायथन स्टार्टअप के दौरान क्या चल रहा है। जब मैंने उपयोग किया strace, तो मैं स्पष्ट रूप से /usr/lib/python3.5 पर PERMISSION_DENIED देख सकता था ।



-3

मेरा विंडोज़ पर एक समान मुद्दा था - मैंने PYTHONHOME सिस्टम चर को हटा दिया। मैं समाधान का अंग्रेजी में अनुवाद करने की कोशिश करूंगा। मेरा कंप्यूटर> गुण> उन्नत सिस्टम सेटिंग्स> पर्यावरण चर, चर PYTHONHOME की तलाश करें और इसे हटा दें।

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