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), так и мои собственные зависимости проекта?
Ответы
Ответ 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. Но я не думаю, что это будет иметь значение.