2012-02-21 51 views
81

我一直在Python,iPython和庫的問題。以下幾點顯示了問題的鏈條。我在Mac Lion上運行Python 2.7。ipython讀取錯誤的Python版本

  1. iPython不讀取scipy,matplotlib的庫,但它確實讀取numpy。
  2. 爲了解決這個問題,我嘗試安裝Python的源代碼版本,它只給了我更多的問題,因爲現在我有兩個不同的版本:2.7.1和2.7.2
  3. 我注意到運行Python,使用2.7版本。 2並且導入了scipy,matplotlib和numpy,但是在iPython中,版本是2.7.1,它不打開scipy或matplotlib。

我試過了幾個我從其他博客帖子遇到的東西。但是他們都沒有幫助,而且不幸的是我不知道我在做些什麼。例如: 我試着用easy_install和pip卸載並重新安裝ipython。我也嘗試通過自制軟件重新安裝所有東西,並修改路徑.bash_profile。

+3

的'ipython'腳本「捆綁」到具體的Python版本是安裝時 - 它不會自動切換到最後安裝的內容。如果你首先安裝了2.7.1,那麼IPython,然後從源代碼2.7.2,您的IPython將繼續使用2.7.1。你需要撤銷所有的詭計,回到你原來的Python版本並找出第一點的原因是什麼;或者,使用安裝的Python安裝程序重新安裝IPython,以訪問您需要的庫。 – millimoose 2012-02-21 22:17:52

+0

你能更具體嗎?...謝謝 – Diego 2012-02-22 13:57:52

+0

具體關於哪個部分? IPython的啓動如何工作,或者如何讓問題消失? – millimoose 2012-02-22 18:27:58

回答

128

好吧快速修復:

which python 

給你/usr/bin/python,對不對?做

which ipython 

我敢打賭這將是/usr/local/bin/ipython。讓我們來看看裏面:

編輯16年9月7日 - 文件現在看起來像這樣:

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()) 

和我的正常工作這樣的,不過我的情況是不完全一樣的OP的。


原來的答覆 - 13年9月30日:

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,應該說它正在使用你想要的版本。

+25

有疑問,'python -m IPython'等同於'ipython',希望你一定要使用正確的Python。 – Matt 2015-11-11 07:11:01

+0

也記得關閉終端並打開一個新的。因爲PATH爲了效率而被shell高速緩存。這是我得到這個解決方案爲我工作的方式。請參閱:http://conda.pydata.org/docs/troubleshooting.html#shell-command-location – putonspectacles 2016-12-18 18:23:34

6

首先,我會確保你使用的是正確的python。在命令提示符下鍵入:

which python 
python -V 

第一個會告訴你路徑,第二個告訴你你正在使用的Python版本。

+0

好吧,它給了我Python 2.7.2的疑問/ usr/local/bin/python – Diego 2012-02-22 13:54:54

8

如何使用virtualenv? 我真的很喜歡它。也許這不是更快的方式,但我認爲這很清楚。

當您創建virtualenv時,您可以使用-p標誌指定python路徑。

for python 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,並且喜歡他們開發產品。然而,爲了「日常」分析的目的,我寧願在我的系統中直接使用可用的python/ipython版本。 – Diego 2015-12-17 15:22:13

+1

這不起作用btw – 2017-02-23 23:58:37

+0

'python -m IPython'將啓動ipython與給定版本的'python' – 2017-07-13 13:56:13

1

類似的方法使用pyenv

pyenv install 3.4.5 
pyenv local 3.4.5 
pip install ipython 
ipython 

,我們將會看到蟒蛇

Python 3.4.5 
1

我能想到的,絕對簡單的解決方案,它需要與環境,安裝的文件,或其他任何東西沒有擺弄,依靠事實

  1. 可執行ipython實際上是一個Python腳本。
  2. 爲您運行pip intall的每個解釋器分別安裝IPython軟件包。

如果您正在使用已安裝了IPython的包runninig Python版本,你可以做

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

這將運行ipython腳本解釋器,你想,而不是在一上市家當。

+0

而不是每次都調用上述內容,我如何將它設置爲默認值,以便每次在我的shell中鍵入'ipython'時,它會自動讀取自定義解釋器而不是默認值? – ThePredator 2017-09-14 02:24:39

+0

添加一個腳本,將其添加到默認路徑之前。但是你必須惹惱環境才能做到這一點。 – 2017-09-14 03:36:44

0

我碰到同樣的問題,但以下是唯一的解決方案是什麼在OSX 12,Sierra工作。

ipython總是啓動python 3.6,但我需要2.7。我找不到2.7的ipython啓動腳本,也找不到IPython模塊以python -m執行。沒有brew instally ipythonpip install ipythonpip2 install ipython可以讓我的2.7版本。所以我手動得到它。

brew install [email protected]here安裝2.7版本,但不會將它放在您的$PATH上,因爲它知道名稱與另一個軟件包衝突。 ln -s /usr/local/Cellar/[email protected]/5.5.0_1/bin/ipython /usr/local/bin/ipython2將解決這個問題,讓你只是從你的shell中運行ipython2提示

對於我來說,因爲我是認真的使用IPython的2.7,我也跑下面的命令。

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

我的解決方案很簡單,但很笨,但工作。

我用python -V確保的是什麼版本是

$ python -V 
Python 2.7.10 

,然後進行別名的.bash_profile

$ vi ~/.bash_profile 

添加一行

alias ipython="python -m IPython" 

那麼你會得到一個ipython在Python 2.7中。

(順便說一句,我的ipython是通過homebrew安裝,其默認值將得到一個IPython的運行在Python 3)

$ brew install ipython