如何设置Python与OpenERP开发环境?
我下载了Open ERP服务器和网页版本,决定不使用更复杂的gtk。我把这两个项目添加到Eclipse中,使用的是在Ubuntu 11.10上运行的pydev,然后启动了它们。我完成了网页客户端的设置,觉得安装已经完成了。不过,在某个时候,我执行了一个脚本,试图把我家目录里的所有文件复制到系统文件夹里,有些文件被复制到了/etc或/usr/local。我不想这样,所以我停止了这个过程。因为我觉得那样我就得以root身份运行Eclipse,而我也无法通过源代码追踪进程,因为文件散落在整个文件系统里。
当我尝试安装一个新模块时出现了问题。我无法把它添加到模块列表中,即使把它打包成zip文件并尝试通过客户端导入也失败了,没有任何错误提示。
在尝试让我添加的模块显示出来时,我在论坛上发现了这样一条信息:“如果你在运行openerp-server时没有指定addons路径,那么在把模块放入addons后,你需要运行setup.py install。”
所以看起来我需要运行:
python setup.py build
sudo python setup.py install
首先,我对为什么需要构建感到困惑,我以为只有C语言库需要构建,而我在安装依赖时已经做过了。
其次,setup.py install
显然是非常重要的,如果你需要运行它来识别新模块。如果所有东西都散落在文件系统中,我该如何追踪源代码呢?
现在,所有的文件都已经从家目录复制到文件系统中,这是我原本想避免的。现在启动脚本在/usr/local/bin,所以我想我不能在Eclipse中使用“以调试身份运行”或者在Eclipse控制台中查看日志。我还在文档中发现,建议用以下命令启动服务器:
./openerp-server.py –addons-path=~/home/workspace/stable/addons
这显然会覆盖安装时在文件系统中创建的addons,意味着在Eclipse中你只会看到addons中的模块,可以进行调试等,但其他资源会在其他地方?
我想这样也可以,但我还是很难想象这会如何运作。我想如果这样做的话,如何才能把标准输出发送到Eclipse控制台呢?
我想我可以在Eclipse中有完整的项目,但除了addons之外的所有资源只是供参考,而只有addons会实际运行,因为它们被–addons-path参数覆盖了。
然后如果我能把输出发送到控制台,那就像我预期的那样。
我看到一些提到在Eclipse工作区使用链接或像Eclipse PHP设置那样以root身份运行Eclipse的说法。
有没有人能告诉我如何从Eclipse启动服务器和网页应用,并让日志输出出现在控制台中?
也许有经验的Python开发者能发现我的盲点,并建议我可能遗漏了什么?
2 个回答
我使用的是Eclipse Kepler SR 1、PyDev 3.1.0、从Launchpad上用bzr获取的OpenERP 7.0,以及Ubuntu 13.10。下面是我如何把这些东西加载到一起的。我省略了让它们正常工作的部分,这里只讲如何获取源代码,以及如何在Eclipse/PyDev中打开和修改OpenERP的源代码。
你需要获取三个bzr仓库,分别是服务器、网页客户端插件和捆绑插件。
所以我创建了一个叫做openerp-bzr
的顶层目录。在这个目录里,我用以下命令检出了源代码。注意使用了checkout
和--lightweight
这两个选项,这样可以避免下载所有的日志和历史记录(这样会小很多,速度也快)。如果你想获取所有内容,可以不加--lightweight
,并把checkout
改成branch
。回到正题,你需要在Launchpad上创建一个账户,注册你的SSH密钥,并配置你的bzr。
bzr checkout --lightweight lp:openobject-server/7.0 openobject-server-7.0
bzr checkout --lightweight lp:openerp-web/7.0 openerp-web-7.0
bzr checkout --lightweight lp:openobject-addons/7.0 openobject-addons-7.0
(刚创建的这些文件夹,我称它们为源文件夹
。)
(这里插入让它正常工作的说明,包括配置文件的设置、PYTHONPATH的设置以及下载所有依赖项。我会在周末补上这些内容。)
然后,仍然在openerp-bzr
文件夹中,我创建链接。第一个创建的文件夹openerp-7.0
,我称它为链接文件夹
。
ln -s openobject-server-7.0 openerp-7.0
cd openerp-7.0/openerp/addons
ln -s ../../../openobject-addons-7.0/* .
ln -s ../../../openerp-web-7.0/addons/* .
现在,如果你的Eclipse设置正确,你可以创建一个新的PyDev项目,勾选创建指向现有源的链接(在下一页选择它们),然后点击下一步并添加
openerp-7.0`(链接文件夹)。
你可以在源文件夹中执行bzr update。
当你开发插件时,可以在其他地方创建实际的文件夹,然后把它们链接到链接文件夹中的插件文件夹里。这样看起来就像你在同一个树结构中工作,你会得到所有的引用和代码补全功能,以及(希望如此,因为我还没测试过这部分!)调试功能。
我能理解你的感受。几年前我开始使用OpenERP时也经历过同样的过程。好消息是,设置并不太难,而且OpenERP在Eclipse中配合PyDev运行得很顺利。
首先,可以看看OpenERP的开发者手册。里面列出了大部分让它运行所需的要求。
针对你的具体问题,其实在开发环境中你根本不需要运行setup.py
这个脚本。这个脚本只在你要把程序部署到服务器时才需要用到。要让服务器识别一个新模块,你可以去管理菜单,选择模块管理,然后更新模块列表。我现在还在用OpenERP 5.0,所以在6.1版本中,名称和位置可能会稍有不同。
在Eclipse中配置项目时,我是从launchpad上把每个分支都下载下来,然后把每个分支作为项目导入到我的Eclipse工作区。6.0和6.1的启动细节有点不同。以下是我为每个版本准备的命令行参数:
6.0版本:
--addons-path ${workspace_loc:openerp-addons-6.0} --config ${workspace_loc:openerp-config/src/server.config} --xmlrpc-port=9069 --netrpc-port=9070 --xmlrpcs-port=9071
6.1版本需要和服务器一起启动网页客户端:
--addons-path ${workspace_loc:openerp-addons-trunk},${workspace_loc:openerp-web-trunk}/addons,${workspace_loc:openerp-migration} --config ${workspace_loc:openerp-config/src/server.config} --xmlrpc-port=9069 --netrpc-port=9070 --xmlrpcs-port=9071