一个适合Web2Py的良好开发环境设置

27

我最近尝试了Web2Py几天了,决定将它作为我的首选。但是有一件事情令我非常担心,这可能会在最终成为一个阻碍。我需要一个好的开发环境和设置,我能够信任并提高生产力。作为一名来自MS Visual Studio世界的程序员,我正在寻找一些具有良好自动完成/智能感知功能和版本控制/部署功能的工具。

我曾尝试在Eclipse中编辑我的代码,但它需要额外的设置才能支持自动完成,并且我不知道是否可以进行调试。(注意到Eclipse中有一个Django项目模板,这有点诱人。)

Wing Ide在如何启动web2py方面有详细的说明,我准备测试一下这个IDE。虽然它不免费,但与Windows世界中的许多工具相比,它价格很便宜。

我还想要一个良好的版本控制(hg)设置,以及一个半自动FTP部署方法。

Web2Py开发者使用哪个IDE,你们的设置看起来是什么样子的?

一个好的IDE中完整的项目设置脚本将非常棒!(就像安装一样,单击即可使其运行100%)。

Pycharm看起来不错,也许可以通过http://youtrack.jetbrains.net/issue/PY-1648添加对web2py的支持。

非常感谢!


1
哇!我提出问题后仅11小时就得到了四个详细的答案。我印象深刻。 - joeriks
我暂时离开了web2py一个月,但现在我回来了 - 我想我会离开Ubuntu轨道,坚持使用我熟悉的服务器IIS作为实时站点。此外 - 我将“保持简单”,使用包含的版本控制工具(如果在win环境中可行)。我希望这仍然是IIS托管web2py的有效指令http://www.web2py.com/AlterEgo/default/show/207。 - joeriks
我的Ubuntu服务器崩溃了,我不知道发生了什么。而且我对如何在Ubuntu上安全地托管网站的知识非常缺乏,因此该平台对我来说确实是一个糟糕的选择。 - joeriks
web2py支持已经在PyCharm 3路线图中了,供参考。 - chb
7个回答

16

脚本

当我在web2py中创建一个新项目后,我会将一些脚本添加到我的主应用程序文件夹中:

web2py\applications\myapp\DebugWinpdb.bat:

C:\Python25\Scripts\winpdb.bat ..\..\web2py.py -i 127.0.0.1 -p8000 -mypassword

web2py\applications\myapp\DebugShell.bat:

C:\Python25\Scripts\winpdb.bat ..\..\web2py.py -S myapp -M

web2py\applications\myapp\Shell.bat:

python ..\..\web2py.py -S myapp -M

集成开发环境

正如其他人所说,无论你使用哪种IDE,你都需要做一些额外的工作才能获得针对web2py的自动补全/智能提示。

对我来说,NetBeans是在“只要你能弄清楚如何做到一切”(Eclipse/PyDev)和“只提供基础但很少有额外功能”(PyScripter)之间达成的一个不错的平衡点。

NetBeans设置(项目属性)

  • Python类别
    • Python平台:Python 2.x(默认为Jython)
  • 运行类别
    • 主模块:web2py.py
    • 应用程序参数:-i 127.0.0.1 -p 8000 -a mypassword

NetBeans优点

  • 紧密的Mercurial集成
    • 当您编辑源文件时,突出显示已添加、更改或删除的行
    • 选择性回滚自上次提交以来所做的每个更改
    • 我使用过的最漂亮的视觉差异查看器之一
  • Python PEP8风格提示(完全可定制)
    • 名称“foo”在你的代码风格中不是有效的类名(CapitalizedWords)
    • 名称“Bar”在你的代码风格中不是有效的函数名(lowercase_with_underscores)
    • 自动格式化快捷键(正确调整操作符周围的间距等)
  • 在源文件中导航
    • 语义上索引当前源文件
    • 按类型按字母顺序组织(类、方法、属性等)
    • 即使是庞大的样式表也可以管理

NetBeans缺点

  • 集成调试器无法与web2py配合使用(这真的很让人痛苦)
  • 启动时间长(但对我来说一旦启动就足够快了)

版本控制

我使用并强烈推荐使用Mercurial进行源代码控制。 正如前面提到的,NetBeans对Mercurial有很好的支持,但有些事情我更愿意在TortoiseHg中完成。

TortoiseHg优点

  • Shell覆盖图标
  • 存储库资源管理器
    • 使用分支/合并的图形显示查看资料库历史记录
    • 一站式获得入站、出站、推送、拉取、更新等按钮,并带有提交工具的按钮
  • 提交工具
    • Hunk选择:从文件内挑选更具集中性的变更以进行提交
    • 添加、删除、差异、恢复、移动、删除、遗忘

TortoiseHg缺点::

  • 没有直接进入命令行的简单方式
  • 经常存在防止在提交时删除文件的错误(无限期等待锁定被释放;从命令行运行hg addremove是一个可靠的解决方法)

发布

我使用WinSCP(用于浏览)、PuTTY(用于终端命令)和TortoiseHg(用于推送/拉取我的资料库)来处理我在Webfaction上的共享主机账户。

我做的第一件事是设置公钥/私钥加密。 如果您在Windows和Linux之间设置此项时有问题,请尝试André Molnar的这些说明。 简而言之,您需要使用Linux上的ssh-keygen生成私钥,使用WinSCP将其复制到Windows机器上,然后将其转换为WinSCP和PuTTY可用的格式。

然后在全局mercurial.ini文件中添加以下行:

[ui]
ssh = "C:\Program Files\TortoiseHg\TortoisePlink.exe" -ssh -2 -i "c:\path\to\your\privatekey.ppk"

即使您必须连接多个服务器,您只需要将公钥复制到每个不同的服务器即可。您还需要让WinSCP和PuTTY知道您的私钥位于何处,但这些都相当容易弄清楚。


非常感谢您丰富的回答!我会查看NetBeans和winpdb。 - joeriks
你在Webfaction的共享托管账户上运行Web2Py了吗? - joeriks
是的。我在Webfaction上没有任何Web2py应用程序,但这只是因为我还没有做到那一步。当我设置它时,在Webfaction上有一个web2py安装脚本(由Massimo编写或大力贡献),它工作得非常好。 - mwolfe02

12

尝试使用trunk中的新web2py管理员界面。它有一个基于Web的Mercurial界面和Google部署界面。

在web2py中,您可以编辑applications/admin/models/0.py文件并设置:

TEXT_EDITOR = 'amy'

你可以使用带有自动完成功能的基于Web的Amy编辑器。它不是默认选项,因为它无法与某些浏览器配合使用,并且自动完成不如Eclipse好。但它可能适用于你。

你可以在Eclipse中使用web2py,但需要进行一些小的解决方案,以便让Eclipse了解web2py环境。 这里有具体说明

我知道其他用户已经使用其他IDE,例如WinIDE和pyCharm。我建议你在web2py邮件列表上提问,那里的人非常乐于助人。


哇,Amy真的很酷http://www.amyeditor.com/api/embed/test_python.html,我真的很喜欢你新界面的方向,赞!如果每个部分的模型/控制器/视图等都在单独的页面上,这不是一个好主意吗?在这种情况下,人们可以轻松地在浏览器选项卡中打开每个部分,并轻松地在它们之间切换(选项卡名称相应)。 - joeriks
我们正在进行管理员重构。这将很快完成。我们还在研究yemacs。我们可以在web2py谷歌小组上听取您的建议。 - mdipierro
这是为了学习而需要智能感知/自动完成功能,对于网页界面来说,兼容性和稳定的环境始终应该是首要考虑的。 - joeriks

8
我很确定目前不存在一个“一键式安装脚本”可以完成你所需要的所有操作。但是不要灰心,你可以创建一个适合自己需求的良好开发环境,并且有很多选择。
虽然我在Windows上进行开发,但我喜欢我所拥有的设置,因为它更像是一种“Unixy”的思考方式,我有许多工具分别执行特定的任务。一旦你建立了一个工作流程,你就可以非常高效地工作——尽管我意识到从Visual Studio世界过来可能会看起来有点混乱。
以下是我已经选定的内容。我相信其他人也有自己的推荐。选择你最喜欢的选项。
(下面应该有指向有用软件的超链接,但我没有足够的声望来包含多于1个链接...)
为了在Windows上进行开发,我很喜欢使用Pyscripter。它是免费的、快速的(与Aptana/Eclipse/Netbeans等相比),并且具有一些不错的功能(如黑色主题、集成Python控制台和代码浏览器等)。
要使web2py的代码完成/智能感知工作,你需要在你的模型/控制器文件中添加一些代码,因为web2py的工作方式。在web2py小组的这个讨论主题中有一些说明。
web2py内置了一个很棒的错误票务系统(请参见web2py书第3章)。要进行更全面的调试,pydb似乎是正确的选择。只需将下面的代码作为断点即可:
import pydb 
pydb.debugger()

点击它将带您进入调试器。

我使用TortoiseHg进行Mercurial集成,效果非常好。再结合winscp,您可以轻松部署。


你是否在Windows + IIS上托管你的web2py网站?这是http://www.web2py.com/AlterEgo/default/show/207的正确方式吗? - joeriks
抱歉,我在Debian VPS上使用Apache和mod_wsgi进行主机托管 - 使用此http://web2py.com/book/default/chapter/11#One-Step-Production-Deployment非常容易设置。 - keybits
好的,谢谢。但是,即使它可能很容易设置 - 对我来说,我对Apache和*nix不够熟悉,无法在上面运行可靠的网站。一个简单的错误,我就会花几个小时在谷歌上寻找答案。 - joeriks

5
你有没有考虑使用更少的工具?Python和web2py都不需要大量的代码就能完成很多工作。除了HTML帮助程序和验证器外,web2py只添加了10或15个新的函数调用。你可能会发现Eclipse和其他IDE实际上会妨碍你的工作。通过管理系统在web2py中设置新应用程序非常简单。由于新应用程序脚手架复制了欢迎应用程序,因此您可以通过编辑欢迎应用程序来自定义新应用程序设置。使用Mercurial(或Git、Subversion或Bazaar)可以在您的计算机上或公共网站上设置服务器,并将更新推送或拉取到生产服务器。保持简单,我说。

只有10或15个新的函数调用?能详细说明一下吗? - Pacerier

5
注意事项:我使用的是OS X系统,在BBEdit中编写大部分代码。
话虽如此,我已经使用Wing和Komodo IDE来进行web2py调试,它们对我来说都非常有效。我已经有一段时间没有尝试NetBeans了;当我使用它时,Python支持似乎有点不太完善。而且我从来没有时间或耐心去快速掌握Eclipse;它和Emacs一样被我归类到了我的心理文件柜中,毫无疑问是对Eclipse和/或Emacs的不公正评价。
(我会重申mdipierro的建议,尝试web2py邮件列表;这真的是不可或缺的——web2py的最大优点之一。)

1

我们在所有的Web应用程序需求中都使用web2py框架,这是我们的设置:

操作系统 - 最新的Ubuntu
IDE - 带有pyDev的Aptana Studio 3.0
版本控制 - git
Python 2.7 开发阶段浏览器:Chrome


0
我发现Wing IDE调试器非常有用。它是一款全能的调试器,还可以配置为进行远程调试,在你在没有GUI的远程机器上运行web2py时非常重要(例如在Amazon Web Services上)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接