ipython गलत अजगर संस्करण पढ़ता है


103

मैं अजगर, iPython और पुस्तकालयों से परेशान रहा हूं। निम्नलिखित बिंदु समस्याग्रस्तता की श्रृंखला दिखाते हैं। मैं मैक लायन पर पायथन 2.7 चला रहा हूं।

  1. iPython scipy, matplotlib के पुस्तकालयों को नहीं पढ़ता है, लेकिन यह सुन्न पढ़ता है।
  2. इसे ठीक करने के लिए, मैंने पायथन के स्रोत कोड संस्करण को स्थापित करने की कोशिश की, और इसने केवल मुझे और अधिक समस्याएं दीं, क्योंकि मेरे पास दो अलग-अलग संस्करण हैं: 2.7.1 और 2.7.2
  3. मैंने देखा कि पायथन चल रहा है, संस्करण 2.7.2 का उपयोग करता है और स्केपी, मैटप्लोटलिब और सुन्न आयात करता है, लेकिन iPython पर संस्करण 2.7.1 है जो स्किपी या मैटप्लोटलिब नहीं खोलता है।

मैंने कई चीजों की कोशिश की है जो मैंने अन्य ब्लॉगपोस्टों से सामना किया है। लेकिन उनमें से किसी ने भी मदद नहीं की है, और दुर्भाग्य से मैं यह नहीं जानता कि मैं उनमें से कुछ के साथ क्या कर रहा हूं। उदाहरण के लिए: मैंने easy_install और pip के साथ ipython को अनइंस्टॉल करने और पुन: स्थापित करने का प्रयास किया। मैंने होमब्रे के माध्यम से सब कुछ पुनः स्थापित करने का प्रयास किया, और पथ को संशोधित किया ।bash_profile


6
यह ipythonस्क्रिप्ट उस विशिष्ट पायथन संस्करण से "बंधी हुई" है जिसे इसके साथ स्थापित किया गया था - यह आपके द्वारा अंतिम रूप से स्थापित किए जाने पर स्वचालित रूप से स्विच नहीं होगा। यदि आपने पहली बार 2.7.1 स्थापित किया है, तो IPython, फिर 2.7.2 स्रोत से, आपका IPython 2.7.1 का उपयोग करता रहेगा। आपको अपने सभी फ़ैलाने को पूर्ववत करने की आवश्यकता है, अपने मूल पायथन संस्करण पर वापस जाएं और पता लगाएं कि बिंदु 1 के पीछे क्या कारण था; वैकल्पिक रूप से, IPython को पुनर्स्थापित करें जो भी Python install का उपयोग करके आपके द्वारा आवश्यक लाइब्रेरी तक पहुंच सकता है।
मिलीमो

क्या आप अधिक विशिष्ट हो सकते हैं? ... धन्यवाद
डिएगो-एमएक्स

1
किस भाग के बारे में विशिष्ट? IPython स्टार्टअप कैसे काम करता है, या समस्या को कैसे दूर किया जाए?
मिलीमो

1
अनिवार्य रूप से, जब आप किसी भी अजगर "प्रोग्राम" को स्थापित करते हैं, जैसे कि आईपीथॉन या यहां तक ​​कि easy_install, प्रोग्राम के लिए स्टार्टअप स्क्रिप्ट को हमेशा उस अजगर निष्पादन योग्य का उपयोग करने के लिए सेट किया जाता है जिसके साथ इसे स्थापित किया गया था। इसलिए, यदि आपके पास अपने पुस्तकालयों के बिना पायथन 2.7.1 था, और फिर IPython स्थापित करें, तो "पायथन 2.7.1 इंस्टॉलेशन" में IPython स्थापित है, और ipythonनिष्पादन योग्य का लिंक आपके PATH पर रखा गया है। यदि आप स्रोत से पायथन 2.7.2 स्थापित करते हैं, तो यह पायथन की एक नई, अलग प्रति है, यह मौजूदा 2.7.1 को अपग्रेड नहीं करेगा, जिसमें IPython है। इसलिए IPython को 2.7.2 कॉपी या उसमें कोई लाइब्रेरी दिखाई नहीं देगी।
24

1
पुस्तकालय ही काम करते हैं। यदि आप स्रोत से पायथन 2.7.2 स्थापित करने के बाद सुन्न आदि स्थापित करते हैं, तो वे संभवतः 2.7.2 निर्देशिका में स्थापित किए गए थे। इसका मतलब है कि पायथन 2.7.1 संस्करण उन पुस्तकालयों को बिल्कुल नहीं देखेगा। चूंकि IPython 2.7.1 के साथ स्थापित किया गया था, यह उन पुस्तकालयों को भी नहीं देख सकता था। मूल रूप से, आप अपने सिस्टम पर पाइथन की पूरी तरह से अलग-अलग प्रतियां रख सकते हैं, जैसा कि आप चाहते हैं, लेकिन यह मुश्किल हो सकता है जिसमें से किसी एक का उपयोग किसके लिए किया जाता है। जब तक आप नहीं जानते कि आप क्या कर रहे हैं, यह पायथन के अंतर्निहित संस्करण के साथ शुरू करना सबसे अच्छा है, और बस लापता पुस्तकालयों को फिर से स्थापित करना है
मिलिम्मोस

जवाबों:


147

ठीक है जल्दी ठीक करें:

which python

आपको देता है /usr/bin/python, है ना? करना

which ipython

और मुझे यकीन है कि हो जाएगा /usr/local/bin/ipython। आइए अंदर देखें:

संपादित करें 9/7/16 - अब फ़ाइल इस तरह दिखती है:

cat /usr/local/bin/ipython

#!/usr/bin/python

# -*- coding: utf-8 -*-
import re
import sys

from IPython import start_ipython

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(start_ipython())

और मेरा इस तरह से ठीक से काम करता है, लेकिन मेरी स्थिति बिल्कुल ओपी की तरह नहीं है।


मूल उत्तर - 9/30/13:

cat /usr/local/bin/ipython

#!/usr/bin/python
# EASY-INSTALL-ENTRY-SCRIPT: 'ipython==0.12.1','console_scripts','ipython'
__requires__ = 'ipython==0.12.1'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('ipython==0.12.1', 'console_scripts', 'ipython')()
    )

अहा - /usr/local/bin/ipythonअपने संपादक में खोलें (विशेषाधिकारों के साथ), और पहली पंक्ति को बदल दें

#!/usr/local/bin/python

सहेजें, iPython शुरू करें, यह कहना चाहिए कि यह उस संस्करण का उपयोग कर रहा है जिसे आप अभी चाहते हैं।


41
संदेह में, python -m IPythonके बराबर है ipython, उम्मीद है कि आप सही पायथन का उपयोग करने के लिए सुनिश्चित हैं।
मैट

2
टर्मिनल को बंद करने और एक नया खोलने के लिए भी याद रखें। चूंकि PATH दक्षता के लिए शेल द्वारा कैश किया गया है। यह है कि कैसे मैं इस समाधान मेरे लिए काम कर रहा है। देखें: conda.pydata.org/docs/…
परसेथिस

@Matt। मैंने भी अनुभव किया। मेरा मामला "अजगर-एम आईपीथॉन" है जो मैं चाहता था कि सही संस्करण को लागू करेगा। लेकिन सिर्फ 'ipython', इसने एक कॉपी शुरू की जो पुराने python2 का उपयोग करती है। रहस्य यह है कि अगर मैं एक "जो ipython" करता हूं, यह जाहिरा तौर पर सही उस अजगर फ़ाइल सामग्री के साथ virtualenv कॉपी की ओर इशारा करता है।
kawingkelvin

15

@ मैट की टिप्पणी को एक उत्तर के रूप में पोस्ट करना बस इतना अधिक दिखाई देता है

python -m IPython

पहले रास्ते में जो भी अजगर पहुंचता है उसके साथ एक मॉड्यूल के रूप में लोयड ipython। मेरे मामले में मेरे पास एक पूर्व-स्थापित था और एक मैंने काढ़ा से जोड़ा था। यह पूरी तरह से काम करता है।


शायद इस सवाल का जवाब नहीं है, लेकिन यह सवाल का जवाब है: "किसी भी अजगर संस्करण के साथ ipython कैसे चलाएं"। धन्यवाद।
साल्यंगोज

9

एक virtualenv का उपयोग करने के बारे में क्या? मुझे वास्तव में यह पसंद है। शायद यह तेज़ तरीका नहीं है, लेकिन मुझे लगता है कि यह बहुत स्पष्ट है।

जब आप एक virtualenv बनाते हैं, तो आप -p ध्वज के साथ अजगर पथ निर्दिष्ट कर सकते हैं।

अजगर 2.7 के लिए

$ virtualenv -p /usr/bin/python2.7 venv2.7
$ source venv2.7/bin/activate
(venv2.7)$ pip install ipython
(venv2.7)$ ipython

अजगर 3.4 के लिए

$ virtualenv -p /usr/bin/python3.4 venv3.4
$ source venv3.4/bin/activate
(venv3.4)$ pip install ipython
(venv3.4)$ ipython

2
यह एक पुराना धागा है, लेकिन मैं भी virtualenvs आ गया है और उन्हें विकासशील उत्पादों के लिए अच्छा लगता है। हालांकि, "हर रोज" विश्लेषण के उद्देश्य के लिए, मेरे सिस्टम में अजगर / ipython का सीधा उपयोग करने योग्य संस्करण होगा।
डिएगो-एमएक्स

1
python -m IPythonके दिए गए संस्करण के साथ IPython शुरू कर देंगेpython
जिओ

1
ध्यान दें कि python -m IPythonइसे स्थापित करने की आवश्यकता है:pip install ipython
जिओ

6

सबसे पहले, मैं यह सुनिश्चित करूँगा कि आप सही अजगर का उपयोग कर रहे हैं। कमांड प्रॉम्प्ट पर:

which python
python -V

पहला आपको रास्ता बताएगा, दूसरा आपको पायथन संस्करण बताता है जिसका आप उपयोग कर रहे हैं।


ठीक है, यह मुझे अजगर 2.7.2 देता है / usr / स्थानीय / बिन / अजगर
डिएगो-एमएक्स

4

मेरा समाधान सरल, मूर्ख लेकिन काम है।

मैं python -Vयह सुनिश्चित करने के लिए उपयोग करता हूं कि संस्करण क्या है

$ python -V
Python 2.7.10

और फिर .bash_profile में उपनाम बनाएं

$ vi ~/.bash_profile

एक पंक्ति जोड़ें

alias ipython="python -m IPython"

तब आपको ipythonअजगर 2.7 में मिल जाएगा । 🙂

(वैसे, मेरे ipythonमाध्यम से स्थापित है homebrew, यह डिफ़ॉल्ट रूप से अजगर 3 में एक ipython रन मिल जाएगा)

$ brew install ipython

2

अत्यंत प्रासंगिक: http://conda.pydata.org/docs/troublesourcing.html#shell-command-location

td; lr समस्याएँ शेल 'हैशिंग' और पथ चर के कारण होती हैं।


यह भी एक सामान्य अच्छा अभ्यास virtualenv में ipython स्थापित करने के लिए है। अपने which pythonvirtualenv अजगर बाइनरी को इंगित करना चाहिए।
परदेसी

Virtualenv के अंदर ipython को स्थापित करने के बाद भी शेल ने मुझे बहुत छोटा किया है। hash -rयह मेरे लिए तय; धन्यवाद!
theY4Kman 20

1

पाइनेव का उपयोग करने वाली एक समान विधि

pyenv install 3.4.5
pyenv local 3.4.5
pip install ipython
ipython

अब यह अजगर का सही संस्करण दिखाएगा

Python 3.4.5

1

पूर्ण सरलतम समाधान जिसके बारे में मैं सोच सकता था, जिसके लिए वातावरण, स्थापित फ़ाइलों, या किसी अन्य चीज़ से कोई फ़िज़लिंग की आवश्यकता नहीं है, उन तथ्यों पर निर्भर करता है

  1. निष्पादन योग्य ipythonवास्तव में एक पायथन स्क्रिप्ट है।
  2. IPython पैकेज आपके द्वारा चलाए गए प्रत्येक दुभाषिया के लिए अलग से स्थापित किया गया pip intallहै।

यदि पायथन के संस्करण के साथ आप रननिजिन कर रहे हैं, तो एक IPython पैकेज स्थापित है, आप बस कर सकते हैं

/path/to/desired/python $(which ipython)

यह ipythonस्क्रिप्ट को उस इंटरप्रेटर के साथ चलाएगा जिसे आप शेबंग में सूचीबद्ध के बजाय चाहते हैं।


हर बार उपरोक्त कॉल करने के बजाय, मैं इसे डिफ़ॉल्ट के रूप में कैसे सेट करूं, ताकि हर बार जब मैं ipythonअपने शेल में टाइप करता हूं , तो यह डिफ़ॉल्ट के बजाय स्वचालित रूप से कस्टम दुभाषिया पढ़ता है?
श्रीवत्स

डिफ़ॉल्ट से पहले पथ के लिए ऐसा स्क्रिप्ट जोड़ें। लेकिन आपको ऐसा करने के लिए पर्यावरण के साथ खिलवाड़ करना होगा।
मैड

0

आपकी समस्या मूल रूप से ipython को सही अजगर का उपयोग करने की है।

इसलिए समस्या को ठीक करने के लिए ipython को सही python का उपयोग करना है (जिसमें पुस्तकालयों की तरह scipy स्थापित है)

मैंने यहाँ एक समाधान लिखा है:

कैसे अजगर बनाने के लिए पायथन 3 के बजाय पायथन 2 का उपयोग करें


0

मैं एक ही मुद्दे पर आया था लेकिन निम्नलिखित एकमात्र समाधान था जो ओएसएक्स 12, सिएरा पर मेरे लिए काम करता था।

ipython हमेशा python 3.6 के लिए लॉन्च किया गया था, लेकिन मुझे इसे 2.7 के लिए चाहिए था। मैं 2.7 के लिए एक ipython स्टार्टअप स्क्रिप्ट नहीं ढूँढ सका, और न ही मैं ipython मॉड्यूल को निष्पादित कर पाया python -m। कोई भी brew instally ipython pip install ipythonया pip2 install ipythonमुझे 2.7 संस्करण नहीं मिला। इसलिए मैंने इसे मैन्युअल रूप से प्राप्त किया।

brew install ipython@5यहाँ से 2.7 संस्करण को स्थापित करता है, लेकिन इसे अपने ऊपर नहीं रखेगा $PATHक्योंकि यह जानता है कि नाम दूसरे पैकेज के साथ संघर्ष करता है। ln -s /usr/local/Cellar/ipython@5/5.5.0_1/bin/ipython /usr/local/bin/ipython2इसे ठीक कर देंगे और आपको बस ipython2अपने शेल प्रॉम्प्ट से चलने देंगे

मेरे लिए, क्योंकि मैं 2.7 के लिए ipython का उपयोग करने के बारे में गंभीर था, मैंने निम्न कमांड भी चलाई।

ln -s /usr/local/Cellar/ipython/6.2.1/bin/ipython /usr/local/bin/ipython3
rm -f /usr/local/bin/ipython
ln -s /usr/local/bin/ipython2 /usr/local/bin/ipython

0

यदि आप एनाकोंडा या कुछ अन्य आभासी पर्यावरण आवरण का उपयोग कर रहे हैं, तो यहां वर्णित सभी उत्तर समस्या को हल करने में मदद नहीं करते हैं।

यह उत्तर इस धारणा पर आधारित है कि आप एनाकोंडा का उपयोग कर रहे हैं।

कहते हैं कि आप एक अजगर 3 वातावरण में हैं और ज्यूपिटर नोटबुक पर एक नोटबुक बनाते समय यह "पायथन 3" के बजाय "पायथन 2" दिखाता है।

ऐसा इसलिए है क्योंकि "ipython" अनिवार्य रूप से एक स्क्रिप्ट है जो चलाया जाता है और इस स्क्रिप्ट में यह उल्लेख किया गया है कि कमांड को निष्पादित करने के लिए यह किस अजगर संस्करण का उपयोग कर रहा है। आपको बस इतना करना है कि आप जो अजगर चाहते हैं उसके संस्करण का उपयोग करने के लिए ipython के लिए इस लाइन को बदल दें।

सबसे पहले ipython सर्वर को बंद करें और "जो pyonon" कमांड का उपयोग करके वर्तमान परिवेश के अजगर निष्पादन योग्य का स्थान प्राप्त करें

मेरा आउटपुट है:

/home/sourabh/anaconda2/envs/py3/bin/python

अब ipython के निष्पादन योग्य स्थान को "ipython" कमांड का उपयोग करें।

मेरा है :

/home/sourabh/anaconda2/envs/py2/bin/python

ध्यान दें कि यह अजगर के एक अलग संस्करण का उपयोग कर रहा है। एक विशिष्ट वातावरण से अजगर, अजगर के एक अलग संस्करण चल रहा है यानी एक अलग वातावरण से अजगर चल रहा है।

अब निर्देशिका एनाकोंडा 2 / बिन (एनाकोंडा 3 उपयोगकर्ताओं के लिए यह एनाकोंडा 3 / बिन होना चाहिए) पर नेविगेट करें और "आईपीथॉन" फ़ाइल खोजें। इसमें पहले पंक्ति को वर्तमान अजगर संस्करण पर इंगित करने के लिए संपादित करें जिसे आप चाहते हैं। अर्थात् "जो अजगर" का उत्पादन:

#!/home/sourabh/anaconda2/envs/py3/bin/python

ध्यान दें कि मैंने अपने python वातावरण को py2 (python 2.7 चल रहा है) से py3 (अजगर 3.5 चलाने) में बदल दिया।

फ़ाइल सहेजें। और जुपिटर नोटबुक चलाएं, अब एक नया नोटबुक बनाते समय "पायथन 3" विकल्प दिखाई देना चाहिए।

चीयर्स!

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