Ссылка на внешнюю библиотеку в проекте разработки Python с использованием Pydev / Eclipse - PullRequest
5 голосов
/ 07 сентября 2011

я уже пару месяцев начинаю разработку на Python - имею опыт работы с C # и Java.

В настоящее время я работаю над 2 различными приложениями на python / appengine, и, как часто бывает в этих случаях, оба приложения совместно используют общий код - поэтому я хотел бы провести рефакторинг и переместить общий / общий код в общее место.

В Java или C # я просто создаю новый проект библиотеки, перемещаю код в новый проект и добавляю ссылку на библиотеку из основных проектов.

Я попробовал то же самое в Python, но не могу заставить его работать.

Я использую Eclipse с плагином Pydev.

Я создал новый проект Pydev, переместил код и попытался:

  • ссылка на проект библиотеки из основных проектов (используя Свойства проекта -> Ссылки на проект)
  • добавить папку библиотеки src в основные проекты (в этом случае у меня возникает ошибка - я предполагаю, что невозможно добавить границы проекта при добавлении существующей исходной папки)
  • добавить как внешнюю библиотеку (почти так же, как определяются библиотеки Google, используя Свойства -> Внешние библиотеки)
  • Импорт в виде ссылки (из «Импорт» -> «Файловая система» и включение «Создать ссылки в рабочей области»)

Во всех случаях я могу ссылаться на код библиотеки во время разработки, но когда я начинаю отладку, сервер разработки appengine выдает исключение, потому что не может найти то, что я переместил в отдельный библиотечный проект.

Конечно, я много искал решение, но похоже, что никто не сталкивался с такой же проблемой - или, может быть, никому не нужно делать то же самое:)

Самое близкое решение, которое мне удалось найти, - это добавить ant-скрипт для архивирования исходников библиотеки и копирования в целевой проект, но таким образом отладка является проблемой, так как я не могу войти в код библиотеки.

Есть предложения?

Излишне говорить, что предлагаемое решение должно учитывать, что код библиотеки должен быть включен в процесс загрузки в appengine ...

Спасибо

1 Ответ

4 голосов
/ 07 сентября 2011

Dev_appserver и производственная среда не имеют никакой концепции проектов или библиотек, поэтому вам нужно структурировать свое приложение так, чтобы все необходимые библиотеки находились в корне приложения. Обычно это проще всего сделать с помощью символической ссылки в виде подкаталогов или в худшем случае, чтобы скопировать их (или, используя контроль версий, сделать их вложенными хранилищами).

То, как это сопоставляется с операциями в вашей IDE, зависит от IDE, но в целом, вероятно, проще всего структурировать приложение так, как вам нужно на диске, и отойти от этого, чтобы настроить вашу IDE так, как вам нравится. .

...