2016-07-22 5 views
3

Я запускаю программу-образец python на моем Mac (El Capitan, 10.11.5)
У меня установлена ​​версия python по умолчанию (2.6), и, кроме того, я установленных python 2.7 и 3.5. Мне нужна matplotlib на моей версии 2.7.Невозможно импортировать matplotlib, даже если он установлен:

Я установил его с помощью pip (not pip3), и я не знаю, почему он был установлен на python 3.5.

Если я печатаю pip list это выход:

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 выходы: /usr/local/bin/python

Мой путь является:

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

В /usr/local/share/python3: У меня есть питон 3.5, в /usr/local/bin: python 2.7, а затем в /usr/bin по умолчанию python.

Когда я запускаю в моей программе from matplotlib import pyplot as plt и попытаться использовать его я получаю:

ImportError: No module named matplotlib

Я думаю, что проблема в том, что Matplotlib установлен на python3.5 сайте-пакета. Как я могу это исправить?

Спасибо!

+0

, пожалуйста, проверьте 'python -m сайт', я думаю, что' python' работает с другой средой, кроме пипса. – miraculixx

+0

Вы можете 'ls' в пакеты сайта python, чтобы точно определить, где он установлен. –

+0

Чтобы добавить что-то, что сказал @miraculixx, использование' pip -version' не только скажет вам версию Pip, но и для которой python установите его. –

ответ

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.

Это не проблема, но вам нужно убедиться, что среды python не перепутаны.

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

1. Использование питона virtualenv функция

Моя рекомендация заключается в использовании virtualenv *):

# 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 

Это позволит создать чистую среду для каждого проекта питона с их отдельным site-packages. Благодаря этому вы можете работать над своим проектом (или даже несколькими проектами), в котором установлены разные пакеты или версии пакетов, без их вмешательства.

Тем не менее, прежде чем двигаться дальше, откройте новый терминал, чтобы убедиться, что весь путь сбрасывается в чистое состояние.

2. Повторная установка пакетов в ваш свежий virtualenv

Активируйте среду и повторно установить необходимые пакеты в среде проекта с использованием

# 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 

После того, как вы сделали это, вы должны иметь возможность импортировать matplotlib lib только штрафом:

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

3.Предоставьте себе перерыв

Чтобы упростить использование virtualenvs, попробуйте virtualenvwrapper. Это добавляет несколько команд в вашей системе, чтобы упростить обработку virtualenvs, например:

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

*) Обратите внимание, что Python 3 обеспечивает venv пакет как часть стандартной библиотеки, в то время как Python 2.7 требует, чтобы вы установите virtualenv упаковка первый.

Смежные вопросы