it-swarm.com.de

ipython liest falsche Python-Version

Ich habe Probleme mit Python, iPython und den Bibliotheken. Die folgenden Punkte zeigen die Kette der Problematik. Ich verwende Python 2.7 auf Mac Lion. 

  1. iPython liest nicht die Bibliotheken von scipy, matplotlib, aber es liest numpy. 
  2. Um dies zu beheben, habe ich versucht, die Quellcodeversion von Python zu installieren, und es gab nur mehr Probleme, da ich jetzt zwei verschiedene Versionen habe: 2.7.1 und 2.7.2
  3. Ich habe bemerkt, dass beim Ausführen von Python die Version 2.7.2 verwendet wird und zwar scipy, matplotlib und numpy importiert, aber auf iPython ist Version 2.7.1, die scipy oder matplotlib nicht öffnet. 

Ich habe verschiedene Dinge ausprobiert, die ich in anderen Blogposts gesehen habe. Aber keiner von ihnen hat geholfen, und leider weiß ich auch nicht so ganz, was ich mit einigen von ihnen mache. Zum Beispiel: Ich habe versucht, ipython mit easy_install und pip zu deinstallieren und erneut zu installieren. Ich habe auch versucht, alles über Homebrew neu zu installieren und den Pfad .bash_profile zu ändern.

92
Diego

Okay, schnelle Lösung: 

which python

gibt dir /usr/bin/python, richtig? Tun

which ipython

und ich wette, das wird /usr/local/bin/ipython sein. Schauen wir mal rein:

Edit 9/7/16 - Die Datei sieht jetzt so aus:

cat /usr/local/bin/ipython

#!/usr/bin/python

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

from IPython import start_ipython

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

Und meiner funktioniert so, aber meine Situation ist nicht genau wie bei den OPs.


Ursprüngliche Antwort - 30.09.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 __== '__main__':
    sys.exit(
        load_entry_point('ipython==0.12.1', 'console_scripts', 'ipython')()
    )

Aha - öffnen Sie /usr/local/bin/ipython in Ihrem Editor (mit Privilegien) und ändern Sie die erste Zeile in 

#!/usr/local/bin/python

speichern Sie, starten Sie iPython und sollten Sie sagen, dass es die Version verwendet, die Sie jetzt möchten. 

136
Manuel Ebert

Was ist mit einer Virtualenv? Ich mag es wirklich. Vielleicht ist es nicht der schnellere Weg, aber ich denke, es ist sehr klar.

Wenn Sie eine Virtualenv erstellen, können Sie den Python-Pfad mit dem Flag -p angeben.

für Python 2.7

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

für Python 3.4

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

Zuerst würde ich sicherstellen, dass Sie den richtigen Python verwenden. Bei einer Eingabeaufforderung geben Sie Folgendes ein:

which python
python -V

Beim ersten wird der Pfad angegeben, beim zweiten wird die verwendete Python-Version angegeben.

6
macduff

Meine Lösung ist einfach, dumm aber gut.

Ich verwende python -V, um sicherzustellen, dass es sich um eine Version handelt

$ python -V
Python 2.7.10

und machen Sie dann einen Alias ​​in .bash_profile

$ vi ~/.bash_profile

Eine Zeile hinzufügen

alias ipython="python -m IPython"

dann erhalten Sie eine ipython in Python 2.7. ????

(Meine ipython wird übrigens über homebrew installiert. Standardmäßig wird in Python 3 eine ipython-Ausführung ausgeführt.)

$ brew install ipython
2
Johnny

äußerst relevant: http://conda.pydata.org/docs/troubleshooter.html#Shell-command-location .

td; lr-Probleme treten aufgrund von Shell-Hashing- und Pfadvariablen auf. 

1
orsonady

Eine ähnliche Methode mit pyenv

pyenv install 3.4.5
pyenv local 3.4.5
pip install ipython
ipython

Jetzt wird die korrekte Version von Python angezeigt

Python 3.4.5
1
Avikd

@Matts Kommentar als Antwort posten, damit er besser sichtbar ist

python -m IPython

Lädt ipython als Modul mit dem Python, auf das zuerst im Pfad zugegriffen werden kann. In meinem Fall hatte ich eine vorinstallierte und eine von Brew. Das funktioniert einfach perfekt.

1
sh87

Die absolut einfachste Lösung, die ich mir vorstellen konnte, die kein Fummeln mit Umgebungen, installierten Dateien oder etwas anderem erfordert, hängt von den Fakten ab

  1. Die ausführbare Datei ipython ist eigentlich ein Python-Skript.
  2. Das IPython-Paket wird für jeden Interpreter, mit dem Sie pip intall ausgeführt haben, separat installiert.

Wenn in der Python-Version, die Sie ausführen, ein IPython-Paket installiert ist, können Sie dies tun

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

Dadurch wird das Skript ipython mit dem gewünschten Interpreter anstelle des im Shebang aufgelisteten Interpreters ausgeführt.

1
Mad Physicist

Ich bin auf das gleiche Problem gestoßen, aber das Folgende war die einzige Lösung, die bei OSX 12, Sierra, für mich funktionierte.

ipython wurde immer für python 3.6 gestartet, aber ich brauchte es für 2.7. Ich konnte weder ein ipython-Startskript für 2.7 finden, noch konnte ich das IPython-Modul mit python -m ausführen. Keiner von brew instally ipythonpip install ipython oder pip2 install ipython konnte die Version 2.7 erhalten. Also habe ich es manuell bekommen.

brew install [email protected] installiert die 2.7-Version von here , legt sie jedoch nicht in $PATH ab, da die Namenskonflikte mit einem anderen Paket bekannt sindln -s /usr/local/Cellar/[email protected]/5.5.0_1/bin/ipython /usr/local/bin/ipython2 behebt dies und lässt Sie ipython2 von Ihrer Shell-Eingabeaufforderung aus ausführen

Da ich mit ipython für 2.7 ernst war, habe ich auch die folgenden Befehle ausgeführt.

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
Jeremy Paige

Alle hier genannten Antworten helfen nicht bei der Lösung des Problems, wenn Sie Anaconda oder einen anderen Wrapper für virtuelle Umgebungen verwenden.

Diese Antwort basiert auf der Annahme, dass Sie Anaconda verwenden.

Angenommen, Sie befinden sich in einer Python 3-Umgebung und beim Erstellen eines Notizbuchs auf Jupyter Notebook wird "Python 2" anstelle von "Python 3" angezeigt.

Dies liegt daran, dass "ipython" im Wesentlichen ein Skript ist, das ausgeführt wird, und in diesem Skript wird angegeben, welche Python-Version zum Ausführen des Befehls verwendet wird. Sie müssen nur diese Zeile ändern, damit ipython die gewünschte Python-Version verwendet.

Stoppen Sie zuerst den ipython-Server und rufen Sie mit dem Befehl "which python" den Speicherort der ausführbaren Python-Datei der aktuellen Umgebung ab.

Meine Ausgabe ist:

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

Holen Sie sich jetzt den ausführbaren Speicherort von ipython mit dem Befehl "which ipython"

meins ist :

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

Beachten Sie, dass es eine andere Version von Python verwendet, z. Python aus einer bestimmten Umgebung, in der eine andere Version von Python ausgeführt wird, dh Python aus einer anderen Umgebung.

Navigieren Sie nun zum Verzeichnis anaconda2/bin (für anaconda 3-Benutzer sollte es anaconda3/bin sein) und suchen Sie nach der Datei "ipython". in diesem editieren sie die erste zeile, um sie auf die aktuelle python version zu verweisen, die sie wollen. dh die Ausgabe von "welches Python", d.h.

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

Beachten Sie, dass ich meine Python-Umgebung von py2 (mit Python 2.7) auf py3 (mit Python 3.5) geändert habe.

Speicher die Datei. Und führen Sie jupyter notebook aus, jetzt sollte beim Erstellen eines neuen Notizbuchs die Option "Python 3" sichtbar sein.

Prost!

0
100rabh

Ihr Problem besteht im Wesentlichen darin, dass ipython den richtigen Python verwendet.

die Lösung des Problems besteht darin, dass ipython den richtigen Python verwendet (der die Bibliotheken wie scipy installiert hat). 

Ich habe hier eine Lösung geschrieben:

Wie kann ich iPython Python 2 anstelle von Python 3 verwenden lassen

0