11

我使用 PyDev 设置了 Eclipse,并且喜欢能够调试我的脚本/应用程序。我刚刚开始玩 Pylons,想知道是否有办法通过 Eclipse 启动粘贴服务器,以便调试我的 web 应用程序?

4

7 回答 7

10

创建新的启动配置(Python 运行)

主选项卡

使用 paste-script.py 作为主模块(你可以在你的 python 安装目录的 Scripts 子目录中找到它)

不要忘记在 PYTHONPATH 区域中添加应用程序的根文件夹

参数 还将基目录设置为根文件夹。

由于程序参数使用“serve development.ini”(或任何你用来调试你的应用程序的东西”)

常用选项卡

检查分配控制台并在后台启动

于 2008-09-29T07:03:33.540 回答
6

如果您不想将 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"])
于 2011-01-06T18:47:21.973 回答
2

yanjost 说得对,只是想补充一点,您需要确保不使用 --reload 选项,这将阻止调试器正确附加自身并导致断点无法工作。只是我遇到的一件小事。

于 2009-08-20T13:17:28.813 回答
2

我可以通过将参数选项卡中的“工作目录”更改为不使用默认值(即选择“其他”->“文件系统”->“你的 Pylons 的根目录”应用程序存储 development.ini 来获得 --reload 工作。

于 2010-09-29T00:01:12.273 回答
1

在 Linux 上,可能是 /usr/bin/paster 或 /usr/local/bin/paster 用于粘贴脚本,对于我有的参数:服务 ${workspace_loc}${project_path}/development.ini

于 2010-06-02T13:36:44.827 回答
1

我也得到了这个工作(最后)。我使用 buildout 而不是 virtualenv 来安装 pylons(说明位于: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}

- 如上所述,在“常用选项卡”中,“检查分配控制台并在后台启动”

- 并记住在尝试之前设置断点。

于 2010-12-17T02:14:05.323 回答
0

这并没有真正回答有关如何在 Eclipse 中执行此操作的问题。但是我一直在用 winpdb 调试 paste 服务器,这是一个非常好的图形化 python 调试器(你可以用 easy_install winpdb 安装它)。

只需启动您的服务器,例如:

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

然后点击运行按钮。

As wayne said, it's necessary to not use --reload option. At least I wasn't able to find how to attach to actual webapp even, when selecting to which forked process debugger should enter (entering different processes can be controlled with "fork parent" and "fork child" debugger commands).

于 2011-04-29T08:34:12.603 回答