使用Eclipse完成SimpleCV代码完成

时间:2012-06-30 09:09:20

标签: python eclipse simplecv

在遇到一些问题之后,我最近成功地启动并运行了SimpleCV。我现在安装了一个有效的SimpleCV,并将它与Eclipse Indigo一起使用。但是,我从SimpleCV导入的所有内容都标记为红色,而Eclipse声明它无法找到指定的导入(即使导入的函数工作正常)。

有没有办法让Eclipse识别SimpleCV的导入,以便我可以使用它的Ctrl-Space代码完整功能?

我试图将“SimpleCV”添加到Forced Builtins,但没有成功。 (这就是我在OpenCV遇到同样问题时所做的,然后就可以了)

感谢您的任何建议!

1 个答案:

答案 0 :(得分:1)

SimpleCV中的进口非常破碎。我一直在努力解决你遇到的同样问题。他们不想修复它的原因(根据他们在他们网站上的答案(http://help.simplecv.org/question/472/code-completion-with-eclipse/)并不是因为他们“都使用vim,emacs,vi”,而是因为他们的很多代码都依赖于拉很多使用* imports进入本地命名空间的库。这是最好的编程,而且编程非常糟糕。

哎呀,你甚至不能自己导入一些文件,因为它们依赖于已经导入的SimpleCV init .py文件和base.py文件。这两个文件都有大量的一揽子进口。我想知道为什么导入SimpleCV需要超过2秒才能在我的电脑上使用SSD运行。现在我知道了。

他们的init.py文件包含以下导入:

from SimpleCV.base import *
from SimpleCV.Camera import *
from SimpleCV.Color import *
from SimpleCV.Display import *
from SimpleCV.Features import *
from SimpleCV.ImageClass import *
from SimpleCV.Stream import *
from SimpleCV.Font import *
from SimpleCV.ColorModel import *
from SimpleCV.DrawingLayer import *
from SimpleCV.Segmentation import *
from SimpleCV.MachineLearning import *

他们的base.py文件还有更多导入:

import os
import sys
import warnings
import time
import socket
import re
import urllib2
import types
import SocketServer
import threading
import tempfile
import zipfile
import pickle
import glob #for directory scanning
import abc #abstract base class
import colorsys
import logging
import pygame as pg
import scipy.ndimage as ndimage
import scipy.stats.stats as sss  #for auto white balance
import scipy.cluster.vq as scv    
import scipy.linalg as nla  # for linear algebra / least squares
import math # math... who does that 
import copy # for deep copy
import numpy as np
import scipy.spatial.distance as spsd
import scipy.cluster.vq as cluster #for kmeans
import pygame as pg
import platform
import copy
import types
import time

from numpy import linspace
from scipy.interpolate import UnivariateSpline
from warnings import warn
from copy import copy
from math import *
from pkg_resources import load_entry_point
from SimpleHTTPServer import SimpleHTTPRequestHandler
from types import IntType, LongType, FloatType, InstanceType
from cStringIO import StringIO
from numpy import int32
from numpy import uint8
from EXIF import *
from pygame import gfxdraw
from pickle import *

你知道他们声称要转换所有这些不同的CV库并对他们应用“Pythonic”方法。但这种严重的进口混乱证明他们错了。

我修复导入的尝试是从init.py文件中删除所有import *,这有助于它在eclipse中呈现的代码完成延迟。然后将SimpleCV egg目录(C:\ Python27 \ Lib \ site-packages \ simplecv-1.3-py2.7.egg)作为外部库导入eclipse。在那之后,我能够运行这个:

from SimpleCV.ImageClass import Image

导入颜色相同:

from SimpleCV.Color import Color

有周期性进口,所以要注意那些可能会咬你的东西。在导入SimpleCV.ImageClass之前尝试导入SimpleCV.Color时,我自己有一个。注意,根据上面的说明,我似乎能够从Eclipse中获得代码完成。