Отладка приложения Pylons через Eclipse

У меня есть установка Eclipse с PyDev, и мне нравится отлаживать свои скрипты / приложения. Я только начал играть с Pylons и задавался вопросом, есть ли способ запустить сервер пастера через Eclipse, чтобы я мог отлаживать свое веб-приложение?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
11
0
5 109
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Ответ принят как подходящий

Создайте новую конфигурацию запуска (Python Run)

Главная вкладка

Используйте paster-script.py в качестве основного модуля (вы можете найти его в подкаталоге Scripts в каталоге установки python)

Не забудьте добавить корневую папку вашего приложения в зону PYTHONPATH

Аргументы Также установите базовый каталог в корневую папку.

В качестве аргументов программы используйте "serve development.ini" (или все, что вы используете для отладки приложения).

Общая вкладка

Отметьте выделить консоль и запустить в фоновом режиме

yanjost прав, просто хотел добавить, что вам нужно убедиться, что вы не используете параметр --reload, это предотвратит правильное подключение отладчика и приведет к тому, что ваши точки останова не будут работать. Просто мелочь, с которой я столкнулся.

В Linux это, вероятно, будет / usr / bin / paster или / usr / local / bin / paster для скрипта вставки, а для аргументов, которые у меня есть: serve $ {workspace_loc} $ {project_path} /development.ini

Мне удалось заставить работать --reload, изменив «Рабочий каталог» на вкладке аргументов, чтобы не использовать значение по умолчанию (т.е. выберите «Другое» -> Файловая система -> «Корень вашего приложения Pylons», в котором хранится development.ini.

Я тоже получил эту работу (наконец). Я использовал buildout вместо virtualenv для установки пилонов (инструкции по адресу: http://wiki.pylonshq.com/display/pylonscommunity/Howto+install+Pylons+with+buildout), поэтому приведенные выше инструкции нужно было немного изменить по мере продвижения.

-для «Основного модуля» я использую:

${workspace_loc:myeclipseprojectname/bin/paster}

(добавление --reload сделало точки останова неработающими для меня, и я тестировал это пару раз)

-для "Программных аргументов" я использую:

serve ${workspace_loc:myeclipseprojectname/mypylonsprojectname/development.ini}

-для "Рабочий каталог, Другое:" я использую:

${workspace_loc:myeclipseprojectname/mypylonsprojectname}

-как упоминалось выше, в «Общая вкладка», «Проверить, выделить консоль и запустить в фоновом режиме»

-и не забудьте установить точку останова перед попыткой.

Если вы не хотите включать установку Python в рабочую область вашего проекта, чтобы получить пастер, вы можете создать драйвер на чистом Python, например:

#!/usr/bin/env python

from paste.script.serve import ServeCommand

ServeCommand("serve").run(["development.ini"])

... и запустить / отладить это в Eclipse.

Примечание: это работает без опции --reload, поэтому вы не получаете горячих развертываний (т.е. вам нужно перезагрузить сервер, чтобы увидеть изменения). В качестве альтернативы вы можете добавить опцию --reload для горячего развертывания, но тогда Pydev не остановится на ваших точках останова. Не могу съесть свой торт и съесть его ...

ServeCommand("serve").run(["--reload", "development.ini"])

На самом деле это не отвечает на вопрос о том, как это сделать в eclipse. Но я отлаживал paster-сервер с помощью winpdb, который представляет собой довольно хороший графический отладчик Python (вы можете установить его с помощью easy_install winpdb).

Просто запустите свой сервер, например:

winpdb /usr/local/bin/paster serve development.ini

И нажмите кнопку запуска.

Как сказал Уэйн, необходимо, чтобы нет использовал параметр --reload. По крайней мере, я не смог найти, как подключиться к реальному веб-приложению даже при выборе отладчика разветвленного процесса, который должен входить (вводом различных процессов можно управлять с помощью команд отладчика «родительский элемент» и «дочерний элемент ветвления»).

Я также обнаружил, что в моем случае включение repoze.profile вызывало слишком глубокие рекурсии, когда пастер запускался с winpdb.

Mikael Lepistö 29.04.2011 13:05

Другие вопросы по теме