2016-07-22 42 views
3

我正在我的Mac上運行示例python程序(El Capitan,10.11.5)
我有一個默認版本的python安裝(2.6),並且在上面我安裝了python 2.7和3.5。我需要2.7版本的matplotlib。無法導入matplotlib即使它安裝了

我用pip(不是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 site',我猜''python'二進制文件運行在不同於pip的環境中,你相信。 – miraculixx

+0

你可以將'ls'放入python site-packages以確定它的安裝位置 –

+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.使用Python的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庫就好了:

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

相關問題