2016-07-22 50 views
3

Ich führe ein Beispiel Python-Programm auf meinem Mac (El Capitan, 10.11.5) Ich habe eine Standardversion von Python installiert (2.6) und obendrein I Python 2.7 und 3.5 installiert. Ich brauche Matplotlib auf meiner 2.7 Version.Matplotlib kann nicht importiert werden, selbst wenn es installiert ist

Ich habe es mit pip (nicht pip3) installiert und ich weiß nicht, warum es auf Python 3.5 installiert wurde.

Wenn ich pip list dieser Art ist die Ausgabe:

cycler (0.10.0) 
Django (1.8.4) 
matplotlib (1.5.1) 
numpy (1.11.1) 
pip (8.1.2) 
pyparsing (2.1.5) 
python-dateutil (2.5.3) 
pytz (2016.6.1) 
selenium (2.53.6) 
setuptools (19.4) 
six (1.10.0) 
wheel (0.26.0) 

which python Ausgänge: /usr/local/bin/python

Mein Weg ist:

/usr/local/share/python3:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin 

In /usr/local/share/python3: Ich habe Python 3.5, in /usr/local/bin: Python 2.7 und dann in /usr/bin der Standard-Python.

Wenn ich laufen in meinem Programm from matplotlib import pyplot as plt und versuchen, es zu verwenden, erhalte ich:

ImportError: No module named matplotlib

Ich denke, das Problem, dass matplotlib ist auf python3.5 Website-Paket installiert ist. Wie könnte ich das beheben?

Vielen Dank!

+0

überprüfen Sie bitte 'python -m-Site', ich denke, die' Python'-Binärdatei läuft aus einer anderen Umgebung als Pip Sie glauben. – miraculixx

+0

Sie könnten in die Python-Site-Pakete "ls", um sicher zu sein, wo es installiert ist –

+0

Um weiter zu addieren, was @miraculixx sagte, sagt 'pip --version' nicht nur die Pip-Version, sondern auch für welche Python Installieren Sie es ist konfiguriert. –

Antwort

1

I have a the default version of python installed (2.6) and on top of that I installed python 2.7 and 3.5. I need matplotlib on my 2.7 version.

die genereally kein Problem, jedoch müssen Sie die Python-Umgebungen sicher, vertauscht nicht.

I think the problem is that matplotlib is installed on python3.5 site-package. How could I fix this?

1. Verwenden virtualenv Funktion

Meine Empfehlung des Python ist virtualenv *) zu verwenden:

# for a python 3.5 environment 
$ cd /path/to/<project with python 3> 
$ PATH="/path/to/python3.x;$PATH" python -m venv myenv 

# for a python 2.7 environment 
$ cd /path/to/<project with python 2> 
$ PATH="/path/to/python2.7;$PATH" virtualenv myenv 

Das schafft saubere pro-Projekt Python Umgebungen mit ihren separaten site-packages. Damit können Sie an Ihrem Projekt (oder sogar mehreren Projekten) arbeiten, in denen verschiedene Pakete oder Paketversionen installiert sind, ohne dass diese sich gegenseitig stören.

Bevor Sie weitermachen, öffnen Sie ein neues Terminal, um sicherzustellen, dass alle Pfade auf einen sauberen Zustand zurückgesetzt werden.

2. Re-Install-Pakete in die frische virtualenv

Aktivieren Sie die Umwelt und neu installieren die erforderlichen Pakete in der Umgebung des Projekts

# assuming the list of packages is in /path/to/project/requirements.txt 
$ cd /path/to/project 
$ source myenv/bin/activate 
$ pip install -r requirements.txt 

mit Sobald Sie dies getan haben, können Sie sollte in der Lage sein, matplotlib lib in Ordnung zu importieren:

python -c 'import matplotlib; print matplotlib' 
<module 'matplotlib' from '/path/to/python/site-packages/matplotlib/__init__.pyc'> 

3.Gönnen Sie sich eine Pause

Um die Verwendung von virtualenvs zu vereinfachen versuchen virtualenvwrapper. Dies fügt ein paar Befehle, um Ihr System den Umgang mit virtualenvs zu vereinfachen, zB:

# create new environments 
$ mkvirtualenv foo 
# activate a particular environment 
$ workon foo 
# list packages in your environment 
$ lssitepackages 
(...) 

*) Beachten Sie, dass Python 3 das venv Paket als Teil der Standardbibliothek bietet, während Python 2.7 erfordert, dass Sie die Installation virtualenv Paket zuerst.

Verwandte Themen