PyDev for Eclipse - 解决Python依赖项(未解析的导入)

时间:2012-12-27 11:42:41

标签: java python eclipse-plugin pydev m2eclipse

我使用PyDev for Eclipse作为我的IDE并使用pip作为我的包管理工具,运行virtualenv。

每次我想在项目中使用/包含一些新库或新依赖项时,我都会将它们添加到 pip-requires 文件中。运行pip install -r pip-requires后,依赖关系安装在我的虚拟环境中没有问题。

我的环境

  • Ubuntu 12.04
  • PyDev for Eclipse 2.7.1.2012100913
  • Python 2.7.3
  • Eclipse indigo

更新:我的Pydev设置

enter image description here

问题:

  • eclipse / pydev 对我在虚拟环境中添加的新库一无所知。我不得不手动将.egg源文件夹手动添加到eclipse项目的PYTHONPATH中,以便解决所有未解决的导入,这非常烦人!可以更容易地解决python依赖关系吗?

更新:

  • 我发现如果我使用虚拟env Env/bin/python作为解释器,如屏幕截图所示,某些基本模块在eclipse中无法解决,例如。 import copy, import json等我应该使用默认/usr/bin/python作为解释器,只需将虚拟环境site-package添加到PYTHONPATH中吗?这样我就可以解决标准python库(例如json)和我自己的项目依赖项?

3 个答案:

答案 0 :(得分:15)

当您从virtualenv中选择python interpreter时,请确保您的系统PYTHONPATH包含site-packages文件夹。就像快照一样。 enter image description here

然后您不需要将它们逐个添加到PYTHONPATH中。您将需要重新启动eclipse(Refresh不起作用)。将添加新模型。

更新: 我检查了virtualenv中的PYTHONPATH。我发现sys.path中还有一些其他路径。它们是系统默认的python安装位置。这些路径包括基本模型,例如copyjson

PS:我的环境是Max OSX 10.8。请通过print sys.path

检查您自己平台的输出
/Users/username/.virtualenvs/test/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg
/Users/username/.virtualenvs/test/lib/python2.7/site-packages/pip-1.1-py2.7.egg
/Users/username/.virtualenvs/test/lib/python27.zip
/Users/username/.virtualenvs/test/lib/python2.7
/Users/username/.virtualenvs/test/lib/python2.7/plat-darwin
/Users/username/.virtualenvs/test/lib/python2.7/plat-mac
/Users/username/.virtualenvs/test/lib/python2.7/plat-mac/lib-scriptpackages
/Users/username/.virtualenvs/test/lib/python2.7/lib-tk
/Users/username/.virtualenvs/test/lib/python2.7/lib-old
/Users/username/.virtualenvs/test/lib/python2.7/lib-dynload
/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7
/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin
/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk
/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac
/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages
/Users/username/.virtualenvs/test/lib/python2.7/site-packages

我认为这是virtualenv的要求。您需要将这些路径添加到pydev系统PYTHONPATH中。然后你可以使用这些基本模块。

答案 1 :(得分:13)

从您的问题中我了解到您手动将Python Egg包添加到路径中。您可以直接进入“项目设置”窗口,然后打开“PyDev - PYTHONPATH”,导航到名为“外部库”的面板,然后添加整个 site-packages文件夹,而不是这样做。您的虚拟环境,通常为/path/to/virtualenv/lib/site-packages/。这样您就不会为每个包逐个添加鸡蛋。安装新软件包时,只需转到Eclipse窗口,如果导入仍未解决,请选择项目并按F5键刷新项目。

希望这应该适合你。祝你好运。

答案 2 :(得分:3)

这就是我如何使用virtualenv设置PyDev:

  1. /home/anshumanb/.virtualenvs/myvenv
  2. 创建virtualenv
  3. 在Eclipse中,Window>偏好> PyDev>解释器 - Python,我添加了一个新的解释器。对于解释器可执行文件,我将其指向virtualenv的Python,即/home/anshumanb/.virtualenvs/myenv/bin/python
  4. 在“选择要添加到PYTHONPATH的文件夹”屏幕中,我选择以/home/anshumanb/.virtualenvs/myvenv和绿色开头的所有路径 /usr/lib/python2.7
    /usr/lib/python2.7/plat-linux2
    /usr/lib/python2.7/lib-tk而没有别的 (有关我选择/usr/lib/python2.7/usr/lib/python2.7/plat-linux2/usr/lib/python2.7/lib-tk
  5. 的原因,请参阅this
  6. 当我回到Eclipse首选项中的Interpreter - Python屏幕时,我点击Apply然后确定
  7. 在此之后,每当我将任何软件包安装到virtualenv中时,我都会回到Interpreter - Python屏幕,单击Apply,选择指向我的virtualenv的解释器(以及我刚安装的软件包)并点击Apply。然后PyDev会选择virtualenv中安装的所有新软件包。

    注意:我正在使用PyDev 2.7.1和Python 2.7.3,但是在使用Eclipse 4.2.1的Arch Linux盒子上。但我不认为它会有任何不同。