Подтвердить что ты не робот

PyDev для Eclipse - разрешение зависимостей Python (неразрешенный импорт)

Я использую PyDev для Eclipse в качестве моей IDE и pip как инструмент управления пакетами, запускающий virtualenv.

Каждый раз, когда я хочу использовать/включать некоторые новые библиотеки или новые зависимости в свой проект, я добавляю их в файл pip-require. Зависимости устанавливаются в моей виртуальной среде без проблем после запуска pip install -r pip-requires.

Мой Env:

  • Ubuntu 12.04
  • PyDev для Eclipse 2.7.1.2012100913
  • Python 2.7.3
  • Eclipse индиго

Обновление: Настройка My Pydev:

enter image description here

Вопросы:

  • eclipse/pydev ничего не знает о новых библиотеках, добавляемых в моем виртуальном env. Мне пришлось вручную добавить исходную папку .egg в проект eclipse PYTHONPATH один за другим, чтобы разрешить все неразрешенные импорт, которые были очень раздражающими! Можно ли разрешить зависимости python в более простой форме?

Обновление:

  • Я обнаружил, что если я использую виртуальный env Env/bin/python как интерпретатор, как показывает скриншот, некоторые базовые модули не разрешаются в eclipse, например. import copy, import json и т.д., следует ли использовать по умолчанию /usr/bin/python в качестве интерпретатора и просто добавлять виртуальный env site-package в PYTHONPATH? так что я могу разрешить как стандартные библиотеки python (например, json), так и мои собственные зависимости проекта?
4b9b3361

Ответ 1

Убедитесь, что ваша система PYTHONPATH включает папку сайтов-пакетов, когда вы выбираете интерпретатор python из своего виртуального. Также как моментальный снимок. enter image description here

Затем вам не нужно добавлять их один за другим в PYTHONPATH. Вам нужно будет перезапустить eclipse (Refresh не работает). Будут добавлены новые модели.

Обновление: Я проверил PYTHONPATH в virtualenv. Я обнаружил, что в sys.path есть другие пути. Они являются установленным по умолчанию python по умолчанию. Этот путь включает базовые модели, такие как copy и json.

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. Затем вы можете использовать эти базовые модули.

Ответ 2

Из ваших вопросов я понял, что вы вручную добавляете пакеты Python Egg в путь. Вместо этого вы можете просто перейти в окно "Параметры проекта", затем откройте "PyDev - PYTHONPATH", перейдите к панели "Внешние библиотеки" и добавьте всю папку site-packages вашей виртуальной среды, обычно /path/to/virtualenv/lib/site-packages/. Таким образом, вы не будете добавлять яйца по одному для каждого пакета. Когда вы устанавливаете новый пакет, просто перейдите в окно Eclipse, и если импорт еще не разрешен, выберите проект и нажмите клавишу F5, чтобы обновить проект.

Надеюсь, это сработает для вас. Удачи.

Ответ 3

Вот как я собираюсь настроить PyDev с помощью virtualenv:

  • Создайте virtualenv в /home/anshumanb/.virtualenvs/myvenv
  • В Eclipse, Window > Preferences > PyDev > Interpreter - Python, я добавляю новый интерпретатор. Для исполняемого файла интерпретатора я указываю его на виртуальный питон i.e. /home/anshumanb/.virtualenvs/myenv/bin/python
  • В окне "Выбор папок, добавленных в 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)
  • Когда я вернусь на экран Interpreter - Python в настройках Eclipse, я нажимаю Apply, затем OK

После этого, всякий раз, когда я устанавливаю какие-либо пакеты в virtualenv, я возвращаюсь на экран Interpreter - Python, нажимаю Apply, выбираю интерпретатор, который указывает на мой virtualenv (и тот, который я только что установил), и нажимаю Apply. Затем PyDev поднимает все новые пакеты, установленные в virtualenv.

Примечание. Я использую PyDev 2.7.1 и Python 2.7.3, но в ящике Arch Linux с Eclipse 4.2.1. Но я не думаю, что это будет иметь значение.