2012-07-21 48 views
3

無法獲得代碼完成功能以用於Eclipse/PyDev中的SciPy,Numpy或Matplotlib在Ubuntu 12.4或11.4下。試用Eclipse Helios和Juno,PyDev的最新版本(2.6)。Numpy,SciPy或Matplotlib在Eclipse中不起作用PyDev

代碼完成對於例如內部項目引用或內置。

增加了「Preferences-> Pydev-> Interpreter - Python-> Libraries」的路徑,並將scipy,numpy和matplotlib添加到「Forced Builtins」中。在「首選項 - > PyDev->編輯器 - >代碼完成」中,將「最小字符數...」設置爲1,「Preferences-> PyDev-> Editor-> Code Completion(ctx不敏感和令牌)」「Number of爲...」字符都設置爲2。

導入和代碼完成的作品IPython的外殼內,所以我覺得這一定有什麼東西在PyDev的...

示例代碼:

import numpy as np 
myArr = np.array([1,2,3]) 
myArr.set#<hit CTRL-SPACE for completion> 

代碼完成不會在此處提示任何數組方法(setasflat,setfield,setflags)。

感謝您的任何建議... :)

問候, 卡斯滕

+0

FWIW ...使用Portable Python 2.7.3,Portable Eclipse(Indigo,3.7),我得到了同樣的結果。當我輸入'import nump'並按CTRL-SPACE完成時,*表示*起作用。但是'myArr.set memilanuk 2012-07-22 02:07:03

回答

3

我想這是因爲PyDev的想不出用np.array方法返回什麼類型。如果你的代碼很長,並且你想多次執行代碼,也許你可以「告訴」pydev什麼是myArr的類型。嘗試使用assert

import numpy as np 
myArr = np.array([1,2,3]) 
assert isinstance(myArr, np.ndarray) 
myArr.set#<hit CTRL-SPACE for completion> 

代碼建成後,將永遠爲myArr的變量。稍後,您可以刪除或註釋斷言行或在Python解釋器中使用「-O」標誌。看看this頁面。

+0

非常好,這是一個很棒的提示。 – 2012-07-24 23:46:41

+0

感謝您指出這一點。 - 之前已經看到過這個地方,我認爲這是一個很好的解決方法,但它有點難看。所以我猜PyDev根本無法解決這個問題。我猜在Ipython它唯一可能的,因爲數組對象已經instanciated ... – 2012-07-25 12:24:58

+1

我同意Carsten。這只是一個解決方法,它確實有點難看。但有一個方便的... – jheyse 2012-07-25 22:14:56

1

只需要注意,在最新的PyDev版本中,您現在可以讓PyDev通過文檔瞭解該類型(不需要assert isinstance)。

詳情請參閱:http://pydev.org/manual_adv_type_hints.html

+0

謝謝法比奧!偉大的功能! – jheyse 2013-09-27 13:58:59