15

我使用 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
  • 日蚀靛蓝

更新:我的 Pydev 设置

在此处输入图像描述

问题:

  • eclipse/pydev对添加到我的虚拟环境中的新库一无所知。我不得不手动将 .egg 源文件夹一一添加到 Eclipse 项目的 PYTHONPATH 中,以解决所有未解决的导入问题,这非常烦人!能否以更简单的方式解决 python 依赖项?

更新:

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

3 回答 3

15

当您从 virtualenv 中选择 python 解释器时,请确保您的系统 PYTHONPATH 包含 site-packages 文件夹。就像快照一样。 在此处输入图像描述

然后就不需要将它们一一添加到 PYTHONPATH 中了。您将需要重新启动 Eclipse(刷新不起作用)。将添加新模型。

更新:我检查了 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 中。然后你就可以使用这些基本模块了。

于 2013-01-03T16:10:04.920 回答
13

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

希望这对你有用。祝你好运。

于 2012-12-31T13:37:55.240 回答
3

这就是我使用 virtualenv 设置 PyDev 的方式:

  1. 在以下位置创建一个 virtualenv/home/anshumanb/.virtualenvs/myvenv
  2. 在 Eclipse 中,Window > Preferences > PyDev > Interpreter - Python,我添加了一个新的解释器。对于解释器可执行文件,我将它指向 virtualenv 的 Python 即/home/anshumanb/.virtualenvs/myenv/bin/python
  3. 在“选择要添加到 PYTHONPATH 的文件夹”屏幕中,我选择了所有以/home/anshumanb/.virtualenvs/myvenvAND开头的路径
    /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
  4. 当我回到 Eclipse 首选项中的解释器 - Python 屏幕时,我点击应用然后确定

在此之后,每当我将任何包安装到 virtualenv 中时,我都会返回 Interpreter - Python 屏幕,点击 Apply,选择指向我的 virtualenv(以及我刚刚安装包的那个)的解释器,然后点击 Apply。PyDev 然后选择安装在 virtualenv 中的任何新包。

注意:我使用的是 PyDev 2.7.1 和 Python 2.7.3,但在带有 Eclipse 4.2.1 的 Arch Linux 机器上。但我认为这不会有什么不同。

于 2013-01-03T23:41:44.253 回答